6.4 构建并评价回归模型
- 6.4.1 使用sklearn估计器构建线性回归模型
- 6.4.2 评价回归模型
- 小结
6.4.1 使用sklearn估计器构建线性回归模型
按照研究方法划分,回归分析研究的范围大致如图所示:
在回归模型中,自变量与因变量具有相关关系,自变量的值是已知的,因变量是要预测的。回归算法的实现步骤和分类算法基本相同,分为学习和预测2个步骤。学习是通过训练样本数据来拟合回归方程;预测则是利用学习过程中拟合出的回归方程,将测试数据放入方程中求出预测值。
常用的回归模型如下:
Sklearn库内部有不少回归算法,常用的回归算法如下:
我要用到的:
from sklearn.ensemble import RandomForestRegressor
from sklearn. ensemble import AdaBoostRegressor
from sklearn.ensemble import GradientBoostingRegressor
from xgboost import XGBRegressor
from lightgbm import LGBMRegressor
# 6.4 构建并评价回归模型
# 6.4.1 使用sklearn估计器构建线性回归模型
# 6-24 使用sklearn估计器构建线性回归模型
## 加载所需函数
from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
## 加载boston数据
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("建立的模型为:\n", clf)
# 预测测试集结果
y_pre = clf.predict(X_test)
print('预测的前20个结果:', y_pre[:20])
# 6-25 回归结果可视化
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_pre, color='red', linewidth = 1.5, linestyle='-.')
plt.xlim((0,102))
plt.ylim((0,55))
plt.legend(['真实值', '预测值'])
plt.savefig('F:/书籍/Python数据分析与应用/自己实现/6.4波士顿房价回归结果可视化.png')
plt.show()
6.4.2 评价回归模型
回归模型的性能评估不同于分类模型,虽然都是对照真实值进行评估,但由于回归模型的预测结果和真实值都是连续的,所以不能够求取Precision、Recall和F1值等评价指标。
回归模型评价指标:
平均绝对误差、均方误差和中值绝对误差的值越靠近0,模型性能越好。可解释方差值和R方值则越靠近1,模型性能越好。
# 6.4.2 评价回归模型
from sklearn.metrics import explained_variance_score, mean_absolute_error, mean_squared_error, median_absolute_error, r2_score
mae = mean_absolute_error(y_test, y_pre)
print("平均绝对误差MAE =",mae)
mse = mean_squared_error(y_test, y_pre)
print("均方误差MSE =",mse)
r2 = r2_score(y_test, y_pre)
print("R2 =",r2)
med_abs = median_absolute_error(y_test, y_pre)
print("中值绝对误差 =",med_abs)
var = explained_variance_score(y_test, y_pre)
print("可解释方差 =",var)
小结
本章主要根据数据分析的应用分类,重点介绍了对应的数据分析建模方法及实现过程。
sklearn数据分析技术的基本任务主要体现在聚类、分类和回归三类。每一类又有对应的多种评估方法,能够评价所构建模型的性能优劣。
通过这一章的学习,读者基本能够掌握常用的模型构建与评估方法,可在以后的数据分析过程中采用适当的算法并按所介绍的步骤实现综合应用。