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