第6章 任务6.4 构建并评价回归模型(标签是连续的)

第6章 任务6.4 构建并评价回归模型(标签是连续的)

庞立智
2023-11-27 / 0 评论 / 187 阅读 / 正在检测是否收录...
温馨提示:
本文最后更新于2023年11月27日,已超过422天没有更新,若内容或图片失效,请留言反馈。

回归模型是一种预测性的建模技术,它研究的是因变量(目标)和自变量(预测器)之间的关系。这种技术通常用于预测分析,时间序列模型以及发现变量之间的因果关系。例如,司机的鲁莽驾驶与道路交通事故数量之间的关系,最好的研究方法就是回归。
它是最为人熟知的建模技术之一。线性回归通常是人们在学习预测模型时首选的技术之一。在这种技术中,因变量是连续的,自变量可以是连续的也可以是离散的,回归线的性质是线性的。
线性回归使用最佳的拟合直线(也就是回归线)在因变量(Y)和一个或多个自变量(X)之间建立一种关系。
用一个方程式来表示它,即

Y = a +bx +e

其中a表示截距,b表示直线的斜率,e是误差项。这个方程可以根据给定的预测变量(s)来预测目标变量的值。

代码6-15 使用sklearn估计器构建线性回归模型

import pandas as pd
# 读取数据集
concrete = pd.read_csv('../data/concrete.csv', encoding='gbk')
# 拆分数据和标签
concrete_data = concrete.iloc[:, :-1]
concrete_target = concrete.iloc[:, -1]
# 划分训练集和测试集
from sklearn.model_selection import train_test_split
concrete_data_train, concrete_data_test, \
concrete_target_train, concrete_target_test = \
train_test_split(concrete_data, concrete_target,
                 test_size=0.2, random_state=20)
from sklearn.linear_model import LinearRegression
concrete_linear = LinearRegression().fit(concrete_data_train, 
                                       concrete_target_train)
# 预测测试集结果    
y_pred = concrete_linear.predict(concrete_data_test)
print('预测前20个结果为:','\n', y_pred[: 20])

代码6-16 本次回归结果的可视化

import matplotlib.pyplot as plt
from matplotlib import rcParams
rcParams['font.sans-serif'] = 'SimHei'
fig = plt.figure(figsize=(12, 6))  # 设定空白画布,并制定大小
plt.plot(range(concrete_target_test.shape[0]), 
         list(concrete_target_test), color='blue')
plt.plot(range(concrete_target_test.shape[0]),
         y_pred, color='red', linewidth=1.5, linestyle='-.')
plt.legend(['真实值', '预测值'])
plt.savefig('../tmp/回归结果.jpg', dpi=1080) 
plt.show()  # 显示图片

代码6-17 线性回归模型的评价

from sklearn.metrics import explained_variance_score,\
mean_absolute_error, mean_squared_error,\
median_absolute_error, r2_score
print('diabetes数据线性回归模型的平均绝对误差为:',
      mean_absolute_error(concrete_target_test, y_pred))
print('diabetes数据线性回归模型的均方误差为:',
      mean_squared_error(concrete_target_test, y_pred))
print('diabetes数据线性回归模型的中值绝对误差为:',
      median_absolute_error(concrete_target_test, y_pred))
print('diabetes数据线性回归模型的可解释方差值为:',
      explained_variance_score(concrete_target_test, y_pred))
print('diabetes数据线性回归模型的R方值为:',
      r2_score(concrete_target_test, y_pred))
2

评论 (0)

取消