机器学习第四篇 线性回归-最小二乘法
- y = 4 + 3 * X + np.random.randn(100,1)和y = 4 + 3 * X + np.random.rand(100,1)的区别
- 回归方程:
代码:使用最小二乘法求最优解。缺点:用公式推到,没有机器学习学习的过程。
# 导入NumPy数值计算库,并简写为np
import numpy as np
# 导入操作系统接口模块
import os
# Jupyter Notebook魔法命令,使matplotlib图表内嵌显示在Notebook中
%matplotlib inline
# 导入matplotlib库(绘图库)
import matplotlib
# 导入matplotlib的pyplot模块,并简写为plt(用于绘图)
import matplotlib.pyplot as plt
# 设置matplotlib的全局参数:
# 坐标轴标签字体大小为14
plt.rcParams['axes.labelsize'] = 14
# x轴刻度标签字体大小为12
plt.rcParams['xtick.labelsize'] = 12
# y轴刻度标签字体大小为12
plt.rcParams['ytick.labelsize'] = 12
# 导入warnings模块(用于处理警告)
import warnings
# 设置忽略所有警告信息(不显示警告)
warnings.filterwarnings('ignore')
import numpy as np#np中有随机模块
X = 2 * np.random.rand(100,1)
y = 4 + 3 * X + np.random.randn(100,1)
plt.plot(X,y,'b.')#b.表示蓝色的点
plt.xlabel('X1')
plt.ylabel('y')
plt.axis([0,2,0,15])
plt.show()
X_b = np.c_[np.ones((100,1)),X]#拼接一列1
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y) #回归方程,求逆,.dot乘法操作
X_new = np.array([[0],[2]])
X_new_b = np.c_[np.ones((2,1)),X_new]
y_predict = X_new_b.dot(theta_best)
plt.plot(X_new,y_predict,'r--')
plt.plot(X,y,'b.')#b.表示蓝色的点
plt.xlabel('X1')
plt.ylabel('y')
plt.axis([0,2,0,15])
plt.show()