线性回归的基本思想在于,输入x与y,通过一个k让y = kx+b,而输入的x可能不止一个数值,可能有许多个数值x1,x2,x3等,故而使用x_vector来表示输入的x值,而相对于的k则为k_vector,通过矩阵乘法,将其变成一个数值。
线性回归的核心在于,通过多组数据的输入获得K值,所使用的方法有两个一个是最小二乘法,一个是梯度下降法:
TX 最小二乘法梯度下降法(求导)求极值:
最小二乘法代码实现:
"""
if __name__ =='__main__':
X = np.random.normal(5, 1, size=20)
Y = [2 * x +2 * np.random.rand()for xin X]
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_xlabel('x')
ax.set_ylabel('y')
ax.scatter(X, Y, c='blue', marker='o', s=30)
# plt.show()
len =len(X)
X = np.mat(np.vstack((X,np.ones(len)))).T
Y = np.mat(Y).T
res = (X.T*X).I* X.T * Y
print(res.shape)
b =float(res[1][0])
w =float(res[0][0])
plt.plot([2, 8], [w *2 + b, w *8 + b])
plt.show()
"""
网友评论