常见的回归模型有:线性回归、非线性回归、Logistic回归、岭回归、主成分回归。
sklearn库内部的常用回归算法(算法名称):线性回归、支持向量回归。最近岭回归、回归决策树、随机森林回归、梯度提升回归树。 以boston数据集为例,使用sklearn估计器构建线性回归模型。代码如下:
#加载函数
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston#boston数据
from sklearn.model_selection import train_test_split
boston=load_boston()
boston_data=boston['data']
boston_target=boston['target']
boston_data_train, boston_data_test, boston_target_train, boston_target_test =
train_test_split(boston_data,boston_target, test_size=0.2,random_state=8)#划分测试集、训练集
mx=LinearRegression().fit(boston_data_train,boston_target_train)#建立线性回归模型
print('建立的模型为:n',mx)
代码输出结果如下:
通过预测可以得到预测结果,代码如下:
pred=mx.predict(boston_data_test)#预测测试集结果
print('预测前20个结果:n',pred)
预测前20个输出的结果如下:
如果想要直观的看到预测结果,可以尝试用折线图,这个能够较为直观的看到线性回归模型的效果,也可以直观的比较预测值与原值的差别,绝大多数的拟合效果都会比较良好,与实际差别不大。
import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.sans-serif']='SimHei'#设置字体为SimHei显示中文
fig=plt.figure(figsize=(13,7))
plt.plot(range(boston_target_test.shape[0]),boston_target_test,color="red",linestyle="-")
plt.plot(range(boston_target_test.shape[0]),pred,color="blue",linestyle="-.")
plt.legend(['真实值','预测值'])
plt.show()
输出结果如下:
评价回归模型
常用的回归模型评价指标有(方法名称):
平均绝对误差、均方误差、中值绝对误差、可解释方差值、R平方 。
其中平均绝对误差,均方误差和中值绝对误差的值越靠近零,模型性能越好。可解释方差值和R平方值越靠近1,性能越好。
下面用代码演示一下用评价方法进行评价:
from sklearn.metrics import explained_variance_score,
mean_squared_error,
median_absolute_error,
mean_absolute_error,
r2_score
print('数据线性回归模型的平均绝对误差为:',mean_absolute_error(boston_target_test,pred))
print('数据线性回归模型的均方误差为:',mean_squared_error(boston_target_test,pred))
print('数据线性回归模型的中值绝对误差为:',median_absolute_error(boston_target_test,pred))
print('数据线性回归模型的可解释方差值为:',explained_variance_score(boston_target_test,pred))
print('数据线性回归模型的R平方值为:',r2_score(boston_target_test,pred))
输出结果如下: