今日分享:模型评估 波士顿房价预测 web
一:流程数组
波士顿地区房价数据获取,数据来自于sklearn自带数据集;微信
波士顿地区房价数据分割;性能
训练与测试数据标准化处理;学习
使用最简单的线性回归模型LinearRegression和梯度降低估计SGDRegressor对房价进行预测测试
二:数据集介绍大数据
因为以前已介绍过如何查看自带数据集的各项信息,这里再也不赘述,可参考K-近邻:鸢尾花(iris数据集)分类优化
三:回归性能评价 -- 均方偏差spa
(均方偏差(Mean Squared Error)MSE) .net
括号中 前者为预测值,后者为平均值真实值
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效果较好
须要注意的是
在数据量小的时候,每每正规方程的效果是比较好的,本次波士顿数据集有500+个样本,这数量很小,小编在运行的时候正规方程效果占上风的次数明显多于梯度降低;各位不妨找更大数据量的数据集来验证SGD的优越性。
线性回归是最为简单、易用的回归模型,但这一特色在某种程度上也限制了其适用范围,尽管如此,在不知道特征之间关系的前提下,咱们仍然使用线性回归做为大多数业务的首要选择。
小规模数据:LinearRegression(不能解决拟合问题,后续会介绍优化的回归模型)以及其它;
大规模数据:SGDRegressor
公众号 QQ群
扫QQ群二维码进交流学习群
或在后台回复:加群
本文分享自微信公众号 - 数据指南(BigDataDT)。
若有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一块儿分享。