0
点赞
收藏
分享

微信扫一扫

【skLearn练习】Linear Regression ---- 波士顿房价回归预测评估

文章目录

  • ​​数据集​​
  • ​​波士顿房价回归预测评估​​
  • ​​获取数据集​​
  • ​​划分数据集、建模获取建模结果​​
  • ​​可视化​​
  • ​​评价回归模型​​
  • ​​★ 注意点​​

数据集

【skLearn练习】Linear Regression ---- 波士顿房价回归预测评估_线性回归

该数据集包含美国人口普查局收集的美国马萨诸塞州波士顿住房价格的有关信息, 数据集很小,只有506个案例。

【skLearn练习】Linear Regression ---- 波士顿房价回归预测评估_机器学习_02

CRIM - 城镇人均犯罪率
ZN - 占地面积超过25,000平方英尺的住宅用地比例
INDUS - 每个城镇非零售业务的比例
CHAS - Charles River虚拟变量(如果是河道,则为1;否则为0)
NOX - 一氧化氮浓度(每千万份)
RM - 每间住宅的平均房间数
AGE - 1940年以前建造的自住单位比例
DIS - 加权距离波士顿的五个就业中心
RAD - 径向高速公路的可达性指数
TAX - 每10,000美元的全额物业税率
PTRATIO - 城镇的学生与教师比例
B - 1000(Bk - 0.63)^ 2其中Bk是城镇黑人的比例
LSTAT - 人口状况下降%
MEDV - 自有住房的中位数报价, 单位1000美元

​​返回顶部​​

波士顿房价回归预测评估

获取数据集

# -*- coding: utf-8
# @Time : 2021/1/26 16:16
# @Author : ZYX
# @File : Model1_波士顿房价线性回归.py
# @software: PyCharm
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression

# 1.获取数据集
boston_data = load_boston()
x = pd.DataFrame(boston_data.data) # 波士顿房价data
y = boston_data.target # 波士顿房价真实值
x.columns = boston_data.feature_names # 特征赋值

​​返回顶部​​

划分数据集、建模获取建模结果

  • 模型.predict(测试集) 对测试集进行回归模型预测
  • 模型.coef_ 获取回归模型的回归系数
  • 模型.intercept_ 获取回归模型的截距

# 2.划分训练集、测试集
xtrain,xtest,ytrain,ytest = train_test_split(x,y,test_size=0.2,random_state=125)
# 3.建立线性回归模型
reg = LinearRegression().fit(xtrain,ytrain)
# 4.1 获取预测值
y_pred = reg.predict(xtest)
# 4.2 获取回归系数
y_w = reg.coef_
# [-1.14077285e-01 4.87165173e-02 -1.20875379e-02 1.59355488e+00, -1.89792822e+01 3.47313008e+00 3.03276293e-03 -1.60090878e+00, 2.90563127e-01 -1.27238844e-02 -9.76743908e-01 8.48566379e-03, -4.87508387e-01]
# 4.3 获取截距
y_w0 = reg.intercept_ # 40.44599864104647
# 4.4 将回归系数与特征对应
compare_feature = [*zip(xtrain.columns,y_w)]
# [('CRIM', -0.11407728518733692),
# ('ZN', 0.04871651733969727),
# ('INDUS', -0.012087537917785052),
# ('CHAS', 1.5935548762536438),
# ('NOX', -18.97928220894716),
# ('RM', 3.4731300808153214),
# ('AGE', 0.0030327629267113626),
# ('DIS', -1.6009087800054767),
# ('RAD', 0.29056312669900103),
# ('TAX', -0.01272388444870162),
# ('PTRATIO', -0.976743908479199),
# ('B', 0.008485663789765877),
# ('LSTAT', -0.48750838710289024)]

​​返回顶部​​

可视化

  • 通过对真实房价与预测房价的数据可视化对比,可以发现线性回归模型的拟合程度不是十分理想,上下起伏波动较大。

# 5.预测结果可视化
plt.rcParams['font.sans-serif'] = 'SimHei'
fig = plt.figure(figsize=(10,6))
plt.plot(range(ytest.shape[0]),ytest,color='black',linestyle='-',linewidth=1.5)
plt.plot(range(y_pred.shape[0]),y_pred,color='red',linestyle='-.',linewidth=1.5)
plt.xlim((0,102))
plt.ylim((0,55))
plt.legend(['真实值','预测值'])
plt.show()

【skLearn练习】Linear Regression ---- 波士顿房价回归预测评估_返回顶部_03

​​返回顶部​​

评价回归模型

通过线性回归模型的评估指标对上面模型进行评估,可以看出模型拟合效果不是很理想,还有提升的空间。

# 6.评价回归模型
from sklearn.metrics import explained_variance_score,mean_squared_error,mean_absolute_error,median_absolute_error,r2_score
# 平均绝对误差
mean_absolute_score = mean_absolute_error(y_pred=y_pred,y_true=ytest) # 3.3775517360082032
# 均方误差
mean_squared_score = mean_squared_error(y_pred=y_pred,y_true=ytest) # 31.15051739031563
# 中值绝对误差
median_absolute_score = median_absolute_error(y_pred=y_pred,y_true=ytest) # 1.7788996425420773
# 可解释方差
explained_variance_score = explained_variance_score(y_pred=y_pred,y_true=ytest) # 0.710547565009666
# R2
r2_score = r2_score(y_pred=y_pred,y_true=ytest) # 0.7068961686076838

​​返回顶部​​

★ 注意点

【skLearn练习】Linear Regression ---- 波士顿房价回归预测评估_线性回归_04


​​在一定程度上,测试集、训练集的划分对于数据模型及结果都会有一定的影响。如上图所示,这是在​random_state =420​ 的时候,利用划分的数据集进行的心形回归预测及评估,可以看出,此时的数据集训练的模型较好,​R²达到了0.82​,图形拟合度较高。

​​返回顶部​​


举报

相关推荐

0 条评论