Python实现基于最⼩⼆乘法的线性回归下⾯展⽰利⽤Python实现基于最⼩⼆乘法的线性回归模型,同时不需要引⼊其他科学计算以及机器学习的库。利⽤Python代码表⽰如下:
#⾸先引⼊数据集x,和y的值的⼤⼩利⽤Python的数据结构:列表,来实现。
y=[4,8,13,35,34,67,78,89,100,101]
x=[0,1,2,3,4,5,6,7,8,9]
#然后再引⼊Python当中的绘图库,⽤于检测我们利⽤线性回归得到的结果是否正确
from matplotlib.font_manager import FontProperties
font = FontProperties(fname=r"c:\windows\", size=15)
import matplotlib.pyplot as plt
k = 0
for i in range(10):
j = k
k = j+i**2
print(k)
print(i)#实现计算x的平⽅
a11 = k
k=0
print("\n")#换⾏,使我们的结果更加清晰
for i in range(10):
#实现计算X的求和
j = k
k = j+i
print(k)
a12 = k
#下⾯开始计算y*x的求和
k=0
for i in range(10):
正则化的最小二乘法曲线拟合pythonj = k
k = j+y[i]*i
print("我们k的⼤⼩是{}".format(k))
yixi = k
b1 = yixi
#现在再来计算我们yi求和后的⼤⼩
k=0
for i in range(10):
j = k
k = j+y[i]
print(k)
yi = k
b2 = yi
#计算完毕,现在根据求出偏导数后的值计算我们斜率和截距的⼤⼩
#根据题意可得到:
a22 = 10
a21 = a12
#因此根据线性代数的克拉默法则,我们可以将其写成⼀个⼆阶⾏列式的形式:
print("现在开始打印⾏列式的各个值:")
print(a11)
print(a12)
print(a21)
print(a22)#检查⽆误后开始⽤克拉默法则进⾏计算
k = (b1*a22-a12*b2)/(a11*a22-a12*a21)
b = (a11*b2-a21*b1)/(a11*a22-a12*a21)
print("\n")
print("K的⼤⼩是:{}".format(k))
print("b的⼤⼩是:{}".format(b))
plt.scatter(x,y)
plt.title("利⽤最⼩⼆乘法实现线性单元回归\n制作⼈:Geeksongs",fontproperties=font)
plt.plot([0,12],[(a11*b2-a21*b1)/(a11*a22-a12*a21),((b1*a22-a12*b2)/(a11*a22-a12*a21))*12+b],linewidth=3,color="black") plt.show()
得解。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。