首先需要两个模块:
1.numpy
2.matplotlib.pylab
安装命令
pip install numpy
pip install matplotlib
线性回归的主要作用就是用一条线性的函数或者表达式来拟合在离散空间的随机点,是一种预测性的建模技术。
安装后导入模块:
import numpy as np
import matplotlib.pylab as plt
1.首先在空间中创建数据:
在线性空间中-1到1中生成100个数字,并通过reshape函数转换成100行1列的数据,并将其打乱。
x = np.linspace(-1,1,100).reshape((100,1))
m = len(x)
y = 0.8*x + 0.1* np.random.randn(m).reshape((m,1))
linespace 的作用就是在-1和1中生成100个数字,并且这100个数字之间的差是相同的。
STEP 2
np.hstack将参数元组的元素数组按水平方向进行叠加
ones_like方法返回一个和给定数组相同类型的数组,这里定义为X
w = np.zeros(2).reshape((2,1))
X = np.hstack((x,np.ones_like(x)))
STEP 3
n = 200
lr = 0.05
J = list()
plt.ion() #ion() 不接受任何参数。只是用于开启交互模式
plt.figure(1,figsize=(8,6)) #创建一个图形
for t in range(n):
pred_y = np.dot(X,w)
cost = 1/(2*m) * np.sum((np.dot(X,w)-y)**2)
J.append(cost)
dw = 1/m * np.dot(X.T,np.dot(X,w)-y)
w = w - lr * dw;
if t % 5 == 0:
plt.subplot(2,1,1)
plt.cla()
plt.scatter(x,y) #在图上绘制x,y坐标为离散点
plt.plot(x,pred_y,'r-',lw=5) #红色线条,粗为5进行拟合
plt.text(0.5,0,'Loss=%.4f' %cost) #显示损失数值
plt.subplot(2,1,2) #新增一个子模块用于显示图形
plt.cla()
plt.plot(J)
plt.pause(0.2)
plt.ioff()
plt.show()
将所有代码结合,就能够得到线性回归的运行示意图。
该图是动态展示的,
当重复次数足够大时,损失函数会变少,得到的直线(曲线)就会更加拟合区间上的离散点。
标签:plt,reshape,matplotlib,np,dot,线性,100,模拟 From: https://blog.51cto.com/u_13283563/5856072