构建并评价回归模型
- 使用sklearn估计器 构建线性回归(Linear Regression)模型
sklearn库内部有不少的回归算法:线性回归、非线性回归、Logistic回归、最近邻回归、回归决策树、随机森林回归、梯度回归树、支持向量回归(svm.SVR)
#使用sklearn估计器 构建 >线性回归模型
#加载所需函数
from sklearn.linear_model import LinearRegression #线性回归
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
#加载boston数据 ,sklearn库datasets里自带的函数数据集
boston=load_boston()
x=boston['data']
y=boston['target']
names=boston['feature_names']
#将数据划分为训练集、测试集
x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2,random_state=125)
#建立线性回归模型
clf=LinearRegression().fit(x_train,y_train)
print('建立的LinarRegression 模型为: \n',clf)
#预测测试集结果
y_pred=clf.predict(x_test)
print("预测前20个结果为:",'\n',y_pred[:20])
利用预测结果和真是结果画出折现图,能较为直观地看出线性回归模型效果
#回归结果可视化
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.sans-serif']='SimHei'
fig=plt.figure(figsize=(10,6))
plt.plot(range(y_test.shape[0]),y_test,color="blue",linewidth=1.5,linestyle="-")
plt.plot(range(y_test.shape[0]),y_pred,color="red",linewidth=1.5,linestyle="-.")
plt.xlim((0,102))
plt.ylim((0,55))
plt.legend(['真实值','预测值'])
plt.show()
- 评价回归模型
回归模型评价指标:
1).平均误差、平均绝对误差和中值绝对误差的值越靠近0,模型性能越好;
2).可解释方差值和R²值越靠近1,模型性能越好。
#回归模型评价
from sklearn.metrics import explained_variance_score,mean_absolute_error,mean_squared_error,median_absolute_error,r2_score
print("Boston数据线性回归模型的平均绝对误差为:",mean_absolute_error(y_test,y_pred))
print("Boston数据线性回归模型的均方误差为:",mean_squared_error(y_test,y_pred))
print("Boston数据线性回归模型的中值绝对误差为:",median_absolute_error(y_test,y_pred))
print("Boston数据线性回归模型的可解释方差值为:",explained_variance_score(y_test,y_pred))
print("Boston数据线性回归模型的R²为:",r2_score(y_test,y_pred))