1维线性回归

机器学习一维线性回归

(飞桨AI Studio)

python 代码:

# 查看当前挂载的数据集目录, 该目录下的变更重启环境后会自动还原
# View dataset directory. 
# This directory will be recovered automatically after resetting environment. 
!ls /home/aistudio/data
 
# 查看工作区文件, 该目录下的变更将会持久保存. 请及时清理不必要的文件, 避免加载过慢.
# View personal work directory. 
# All changes under this directory will be kept even after reset. 
# Please clean unnecessary files in time to speed up environment loading. 
!ls /home/aistudio/work
 
#导入所需包
import numpy as np
import scipy as sp
import matplotlib.pyplot as plt
 
#样本数据(Xi,Yi),需要转换成数组(列表)形式
Xi=np.array([162,165,159,173,157,175,161,164,172,158]) #身高数据
Yi=np.array([48,64,53,66,52,68,50,52,64,49])#体重数据
 
 

 

 

可以推得

#根据最小二乘法的解析解求解最优权值w和b
w=0
b=0
m=len(Xi)
#请补全最小乘法的代码

#求w
#遍历x数组求x的平均值 sumx=0 for i in range (m): sumx=sumx+Xi[i] xba=sumx/m

#分别求w的分子和分母 wz=0 wm=0 x2=0 for i in range (m): wz=wz+Yi[i]*(Xi[i]-xba) x2=x2+Xi[i]*Xi[i] wm=x2-sumx*sumx/m w=wz/wm
#求解b for i in range (m): b=b+(Yi[i]-w*Xi[i]) b=b/m #输出求得的w和b的最优解 print("w=",w,"b=",b)

此步运行得:
w= 1.0595238095237538 b= -117.79761904760

 


 

#画样本点
plt.figure(figsize=(8,6)) ##指定图像比例: 8:6
plt.scatter(Xi,Yi,color="red",label="Sample data",linewidth=2) 
#画拟合直线
x=np.linspace(150,180,80) #在150-180直接画80个连续点
y=w*x+b ##函数式
plt.plot(x,y,color="blue",label="Fitting Curve",linewidth=2) 
plt.legend() #绘制图例
plt.xlabel('横轴:身高(厘米)', fontproperties = 'simHei', fontsize = 12)
plt.ylabel('纵轴:体重(公斤)', fontproperties = 'simHei', fontsize = 12)
plt.show()
 
posted @ 2022-04-08 14:32  月月今天做题了吗  阅读(124)  评论(0)    收藏  举报