编写 test_sklearn_6.py 如下
# -*- coding: utf-8 -*-
""" 使用 sklearn 估计器构建线性回归模型 """
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib import rcParamsfrom sklearn import datasets
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
#from sklearn.preprocessing import StandardScaler# 1.加载 datasets 中的波士顿住房数据集
data_url = "http://lib.stat.cmu.edu/datasets/boston"
raw_df = pd.read_csv(data_url, sep="\s+", skiprows=22, header=None)
# data
X = np.hstack([raw_df.values[::2, :], raw_df.values[1::2, :2]])
# target
y = raw_df.values[1::2, 2]
#f_names = housing['feature_names']# 2.将数据集划分为训练集和测试集
# 使用 train_test_split 划分数据集
X_train,X_test,y_train,y_test = \train_test_split(X,y, test_size=0.2, random_state=125)
# 3.建立线性回归模型
lrf = LinearRegression().fit(X_train, y_train)
print(" Linear Regression model:\n", lrf)# 4.预测测试集结果
y_pred = lrf.predict(X_test)
print("前20个结果:\n", y_pred[:20])# 线性回归结果可视化
rcParams['font.sans-serif'] = 'SimHei'
fig = plt.figure(figsize=(10,6))
plt.plot(range(y_test.shape[0]), y_test,linewidth=1.5,linestyle='-',color='blue')
plt.plot(range(y_test.shape[0]), y_pred,linewidth=1.5,linestyle='-.',color='red')
plt.xlim((0,102))
plt.ylim((0, 55))
plt.legend(['真实值','预测值'])
#plt.savefig('linear_result.png')
plt.show()# 回归模型评价指标
from sklearn.metrics import explained_variance_score,median_absolute_error
from sklearn.metrics import mean_absolute_error,mean_squared_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^2值:", r2_score(y_test,y_pred))
运行 python test_sklearn_6.py
boston 线性回归模型的平均绝对误差: 3.3775517360082143
boston 线性回归模型的均方误差: 31.15051739031571
boston 线性回归模型的中值绝对误差: 1.7788996425419814
boston 线性回归模型的可解释方差值: 0.7105475650096652
boston 线性回归模型的 R^2值: 0.7068961686076831
参考书:【Python 数据分析与应用】第6章 使用 scikit-learn 构建模型