线性回归:波士顿房价预测

今日分享:模型评估 波士顿房价预测 

一:流程

  1. 波士顿地区房价数据获取,数据来自于sklearn自带数据集;

  2. 波士顿地区房价数据分割;

  3. 训练与测试数据标准化处理;

  4. 使用最简单的线性回归模型LinearRegression和梯度下降估计SGDRegressor对房价进行预测

二:数据集介绍

由于之前已介绍过如何查看自带数据集的各项信息,这里不再赘述,可参考K-近邻:鸢尾花(iris数据集)分类

三:回归性能评价 -- 均方误差

(均方误差(Mean Squared Error)MSE) 

括号中 前者为预测值,后者为平均值真实值

sklearn回归评估API

均方误差回归评估API
mean_squared_error

mean_squared_error(y_true, y_pred)
均方误差回归损失
y_true:真实值
y_pred:预测值
return:浮点数结果

注:真实值,预测值为标准化之前的值

四:代码演示

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression,SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.metrics import mean_squared_error
import numpy as np
def mylinear():
   '''线性回归预测房子价格'''
   
   #获取数据
   lb = load_boston()
#     print(lb.data.shape)
   
   #分割数据集到训练集和测试集
   x_train,x_test,y_train,y_test = train_test_split(lb.data,lb.target,test_size=0.25)
   
   #线性回归
   #特征值和目标值都必须进行标准化处理
   #实例标准化
   std_x = StandardScaler()
   
   x_train = std_x.fit_transform(x_train)
   x_test = std_x.transform(x_test)
   
   
   #目标值标准化
   std_y = StandardScaler()
   
   #需要将一维数组形式的
   y_train = std_y.fit_transform(y_train.reshape(-1,1))
   y_test = std_y.transform(y_test.reshape(-1,1))
   
   '''正规方程房价回归'''
   #实例化
   lr = LinearRegression()
   
   lr.fit(x_train,y_train)
   
   print('\n正规方程预测系数:')
   print(lr.coef_)
   
   y_lr_predict = std_y.inverse_transform(lr.predict(x_test))
#     print('\n正规方程预测房价结果: ')
#     print(y_lr_predict)
   
   print("\n正规方程的均方误差:\n", mean_squared_error(std_y.inverse_transform(y_test), y_lr_predict))

   '''梯度下降房价预测'''
   sgd = SGDRegressor()
   
   sgd.fit(x_train, y_train)
   
   print('\n梯度下降预测系数')
   print(sgd.coef_)
   
   y_sgd_predict = std_y.inverse_transform(sgd.predict(x_test))
#     print('\n梯度下降预测房价结果: ')
#     print(y_sgd_predict)
   
   print("\n梯度下降的均方误差:\n", mean_squared_error(std_y.inverse_transform(y_test), y_sgd_predict))
   
   
if __name__ == '__main__':
   mylinear()

输出结果

正规方程预测系数:
[[-0.08360681  0.15373615  0.02480098  0.08251741 -0.23486123  0.30338074
 -0.03765651 -0.37289693  0.30167118 -0.25215956 -0.23483065  0.08729726
 -0.35453057]]

正规方程的均方误差:
21.01679559906273

梯度下降预测系数
[-0.05126309  0.09458204 -0.04955082  0.0962106  -0.1049907   0.35959731
-0.03206284 -0.22670858  0.0850546  -0.05543759 -0.20566718  0.08932997
-0.32506289]

梯度下降的均方误差:
20.86565216258738

由输出结果对比两者的均方误差,该次运行结果SGD效果较好

需要注意的是

  1. 在数据量小的时候,往往正规方程的效果是比较好的,本次波士顿数据集有500+个样本,这数量很小,小编在运行的时候正规方程效果占上风的次数明显多于梯度下降;各位不妨找更大数据量的数据集来验证SGD的优越性。

  2. 线性回归是最为简单、易用的回归模型,但这一特点在某种程度上也限制了其适用范围,尽管如此,在不知道特征之间关系的前提下,我们仍然使用线性回归作为大多数业务的首要选择。

  3. 小规模数据:LinearRegression(不能解决拟合问题,后续会介绍优化的回归模型)以及其它;

  4. 大规模数据:SGDRegressor



Python基础知识集锦

爬虫专题文章整理篇!!!

Python数据分析干货整理篇

Matplotlib数据可视化专题集锦贴


公众号     QQ群

扫QQ群二维码进交流学习群

或在后台回复:加群

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值