机器学习之linear_model(普通最小二乘法)

y=wi*xi+b
基于最小二乘法的线性回归:寻找参数w和b,使得w和b对x_test_data的预测值y_pred_data与真实的回归目标y_test_data之间的均方误差最小。

公式推导:
在这里插入图片描述
基于最小二乘法构造linear_model有5个步骤:
1、导包。

from sklearn import linear_model
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error

sklearn中有专门的线性模型包linear_model,numpy用于生成数据,matplotlib用于画图,另外导入MSE,R_Square和MAE三个评价指标。
2、构造数据集。可以自动生成数据,也可以寻找现有数据,以下数据是作业中的数据,样本数据只有一个特征。
3、训练模型。
4、输出系数w和截距b并对测试集进行预测。
5、作图。

完整代码:

from sklearn import linear_model
import numpy as np
import matplotlib.pyplot as plt
from sklearn.metrics import mean_squared_error,r2_score,mean_absolute_error

x_train_data=np.array([383.,323.,328.,207.,226.,25.,179.,60.,208.,606.]).reshape(-1,1)  #变成一个向量
y_train_data=np.array([640.,633.,619.,393.,428.,27.,193.,66.,226.,1591.])

x_test_data=np.array([385.,145.,258.,254.,100.,47.,58.,79.,415.,144.,156.,149.,20.,25.]).reshape(-1,1)
y_test_data=np.array([840.,195.9,588.3,499.4,77.,-100.8,-96.,-88,950.8,199.3,230.5,233.,-160.,-118.])

#训练模型
lr=linear_model.LinearRegression()
lr.fit(x_train_data,y_train_data)
y_pred=lr.predict(x_test_data)

#输出系数和截距
print('w:',lr.coef_,'b:',lr.intercept_)
#输出评价指标
print('MSE:',mean_squared_error(y_test_data,y_pred))
print('MAE:',mean_absolute_error(y_test_data,y_pred))
print('R Squared:',r2_score(y_test_data,y_pred))

#显示
plt.scatter(x_test_data, y_test_data,  color='black')
plt.plot(x_test_data, y_pred, color='blue', linewidth=3)
plt.show()

在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章