机器学习——李航(实验)笔记第一二章

server/2025/3/4 4:51:57/

plt.plot(x_points,fit_func(p_lsq[0],x_points),label='fitted curve')

result = leastsq(residuals_func, initial_params, args=(x_data, y_data))

regularization=0.00001  #较小的λ值意味着正则化作用较弱,模型可能仍然会过拟合;较大的λ值则可能导致模型欠拟合。

简单方法:

1.plt.rcParams['axes.unicode_minus'] = False

这行代码用于解决Matplotlib在绘制图表时,负号(-)显示为方块或乱码的问题。

强制Matplotlib使用直线来表示负号

 2.plt.rcParams['font.sans-serif']=['SimHei']

这行代码的作用是设置Matplotlib中默认的无衬线字体(sans-serif)为“SimHei”(黑体)

3.在 scikit-learn 库中,Perceptron 类是一个用于二分类任务的线性分类器。它是基于感知机学习算法实现的,该算法是一种简单的线性分类算法,旨在找到一个能够将不同类别的数据点分开的超平面(在二维空间中是一条直线,在三维空间中是一个平面,以此类推)。

4.fit_intercept=True:这个参数指定是否应该计算截距项(即偏置项),提高灵活性

5.max_iter=1000:这个参数指定了算法收敛的最大迭代次数。

6.tol=None:这个参数指定了算法收敛的容忍度。如果权重更新的变化量小于这个值,则算法认为已经收敛,并停止迭代。在您的代码中,tol 被设置为 None,这意味着将使用 scikit-learn 的默认容忍度值。

手动实现:

1.y 是从 df 的最后一列(即原始的 Iris 标签,经过转换后变为 1 和 -1)中提取的。

X 是从 df(一个包含 Iris 数据集前 100 个样本的 DataFrame)中提取的,具体是前两列(花萼长度和花萼宽度)

import pandas as pd
import numpy as np
import sklearn.datasets
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt#导入数据
iris=load_iris()
df=pd.DataFrame(iris.data,columns=iris.feature_names)
df['label']=iris.target
df.columns=['sepal length','sepal width','petal length','petal width','label']
df.label.value_counts()#绘制散点图
plt.scatter(df[:50]['sepal length'],df[:50]['sepal width'],label='0')
plt.scatter(df[50:100]['sepal length'],df[50:100]['sepal width'],label='1')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend()
plt.show()#数据准备
data=np.array(df.iloc[:100,[0,1,-1]])
X,y=data[:,:-1],data[:,-1]  #X是前两列,y是最后一列
y=np.array([1 if i==1 else -1 for i in y])#感知机模型
class Model:#初始化权重和偏置def __init__(self):self.w=np.ones(len(data[0])-1,dtype=np.float32)self.b=0self.lr=0.1#定义sign函数def sign(self,x,w,b):y=np.dot(x,w)+breturn y#训练模型def fit(self,X_train,y_train):is_wrong=Falsewhile not is_wrong:wrong_count=0for d in range(len(X_train)):X=X_train[d]y=y_train[d]if y*self.sign(X,self.w,self.b)<=0: #sign函数作用是计算wx+b的值self.w=self.w+self.lr*np.dot(y,X)self.b=self.b+self.lr*ywrong_count+=1if wrong_count==0:is_wrong=Truereturn 'Perceptron Model!'#训练模型
perceptron=Model()
perceptron.fit(X,y)#绘制分类图
X_points=np.linspace(4,7,10)
y_ = -(perceptron.w[0] *X_points + perceptron.b) / perceptron.w[1] 
plt.plot(X_points,y_)
plt.plot(data[:50,0],data[:50,1],'bo',color='blue',label='0')
plt.plot(data[50:100,0],data[50:100,1],'bo',color='orange',label='1')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend()
plt.show()

 

#丰富图案,采用内置函数perceptron
import sklearn
from sklearn.linear_model import Perceptronsklearn.__version__clf = Perceptron(fit_intercept=True,    max_iter=1000,tol=None,shuffle=True)
clf.fit(X, y)# 画布大小
plt.figure(figsize=(10,10))# 中文标题
plt.rcParams['font.sans-serif']=['SimHei']  #rc
plt.rcParams['axes.unicode_minus'] = False
plt.title('鸢尾花线性数据示例')plt.scatter(data[:50, 0], data[:50, 1], c='b', label='Iris-setosa',)
plt.scatter(data[50:100, 0], data[50:100, 1], c='orange', label='Iris-versicolor')# 画感知机的线
x_ponits = np.arange(4, 8)
y_ = -(clf.coef_[0][0]*x_ponits + clf.intercept_)/clf.coef_[0][1]
plt.plot(x_ponits, y_)# 其他部分
plt.legend()  # 显示图例
plt.grid(False)  # 不显示网格
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend()
plt.show()
import numpy as np
import scipy as sp  # 导入scipy库,用于科学计算
from scipy.optimize import leastsq  # 导入最小二乘法函数
import matplotlib.pyplot as pltregularization=0.00001  #较小的λ值意味着正则化作用较弱,模型可能仍然会过拟合;较大的λ值则可能导致模型欠拟合。def real_func(x):return np.sin(2*np.pi*x)
def fit_func(p,x):f=np.poly1d(p)return f(x)
def residuals_func(p,x,y):return fit_func(p,x)-y
def residuals_func_regularization(p,x,y):ret=fit_func(p,x)-yret=np.append(ret,np.sqrt(0.5*regularization*np.square(p)))return retx=np.linspace(0,1,10)
x_points=np.linspace(0,1,1000)
y_=real_func(x)
y=[np.random.normal(0,0.1)+y1 for y1 in y_]
def fitting(M=0):p_init=np.random.rand(M+1)p_lsq=leastsq(residuals_func,p_init,args=(x,y))p_lsq_regularization=leastsq(residuals_func_regularization,p_init,args=(x,y))print('Fitting Parameters:',p_lsq[0])   #p_lsq[0]输出拟合参数,p_lsq[1]输出协方差矩阵plt.plot(x_points,real_func(x_points),label='real') #real_func(x_points)为真实值,x_points为x轴plt.plot(x_points,fit_func(p_lsq[0],x_points),label='fitted curve') #fit_func(p_lsq[0],x_points)为拟合值plt.plot(x_points,fit_func(p_lsq_regularization[0],x_points),label='regularization') #fit_func(p_lsq[0],x_points)为拟合值plt.plot(x,y,'bo',label='noise') #y为带噪声的真实值plt.legend()plt.show()return p_lsqp_lsq_0=fitting(M=0) #M=0表示多项式的次数为0
p_lsq_1=fitting(M=1) #M=1表示多项式的次数为1
p_lsq_3=fitting(M=3) #M=3表示多项式的次数为3
p_lsq_9=fitting(M=9) #M=9表示多项式的次数为9

 

 


http://www.ppmy.cn/server/171926.html

相关文章

中科大《计算机网络》1.1什么是Internet笔记

什么是Internet 1. 网络核心概念与术语‌ ‌1.1 网络与互联网的本质区别‌ ‌对比维度‌‌网络&#xff08;Network&#xff09;‌‌互联网&#xff08;Internet&#xff09;‌‌定义‌任意互连的计算设备集合&#xff08;如局域网&#xff09;由多个网络通过路由器互联形成…

cookieParser 依赖详解

cookie-parser 是一个用于在 Express.js 中解析 HTTP Cookie 的 Node.js 中间件。它将 Cookie 字符串解析为 JavaScript 对象&#xff0c;使开发者能够方便地在 Express 应用中访问和操作 Cookie。 一、安装 npm install cookie-parser二、基本使用 const express require(…

飞鱼科技游戏策划岗内推

协助策划完成相关工作&#xff0c;包括但不仅限于策划配置&#xff0c;资料搜集&#xff0c;游戏体验&#xff1b; 游戏策划相关作品&#xff1b;游戏大赛经历&#xff1b;游戏demo制作经历&#xff1b;游戏公司策划岗位实习经历优先 内推码 DSZP7YFU

Opencv 图像梯度计算

4.1 Sobel算子 Sobel算子主要计算图像在水平和垂直方向上的梯度&#xff0c;从而检测图像中的边缘。 Sobel算子通过两个33的卷积核分别计算水平方向和垂直方向的梯度&#xff1a; G x [ − 1 0 1 − 2 0 2 − 1 0 1 ] ∗ A and G y [ − 1 − 2 − 1 0 0 0 1 2 1 ] …

2020年蓝桥杯Java B组第二场题目+部分个人解析

#A&#xff1a;门牌制作 624 解一&#xff1a; public static void main(String[] args) {int count0;for(int i1;i<2020;i) {int ni;while(n>0) {if(n%102) {count;}n/10;}}System.out.println(count);} 解二&#xff1a; public static void main(String[] args) {…

tableau之雷达图和凹凸图

一、雷达图 概念 雷达图&#xff08;Radar Chart&#xff09;&#xff0c;也称为蜘蛛网图&#xff08;Spider Chart&#xff09;或星状图&#xff08;Star Chart&#xff09;&#xff0c;是一种用于多变量数据可视化的图表。它以中心点向外辐射的轴线表示不同的变量&#xff…

DeepSeek 助力 Vue 开发:打造丝滑的分割线(Divider)

前言&#xff1a;哈喽&#xff0c;大家好&#xff0c;今天给大家分享一篇文章&#xff01;并提供具体代码帮助大家深入理解&#xff0c;彻底掌握&#xff01;创作不易&#xff0c;如果能帮助到大家或者给大家一些灵感和启发&#xff0c;欢迎收藏关注哦 &#x1f495; 目录 Deep…

国自然面上项目|基于多模态MR影像的胶质母细胞瘤高危区域定位及预后预测研究|基金申请·25-02-28

小罗碎碎念 今天和大家分享一个面上项目&#xff0c;执行年限为2019.01&#xff5e;2022.12&#xff0c;直接费用为57万元。 胶质母细胞瘤&#xff08;GBM&#xff09;预后差且差异大&#xff0c;异质性是重要因素&#xff0c;临床手段难评价。影像组学为异质性研究提供方法&am…