线性回归之美国波斯顿房价预测

1,075 阅读1分钟
原文链接: blog.csdn.net

一、读入数据及描述

#1.读入数据
from sklearn.datasets import load_boston
#从读取的房价数据存储在boston变量中
boston=load_boston()
#输出数据描述
print(boston.DESCR)

这里写图片描述

二、数据分割及样本构建

#数据分割
from sklearn.cross_validation import train_test_split
import numpy as np
X=boston.data
y=boston.target
#随机擦痒25%的数据构建测试样本,剩余作为训练样本
X_train,X_test,y_train,y_test=train_test_split(X,y,random_state=33,test_size=0.25)

三、分析目标值之间的差异

#分析回归目标值的差异
print("The max target value is",np.max(boston.target))
print("The min target value is",np.min(boston.target))
print("The average target value is",np.mean(boston.target))

这里写图片描述

#2.数据标准化处理
from sklearn.preprocessing import StandardScaler
#分别初始化对特征和目标值的标准化器
ss_X=StandardScaler()
ss_y=StandardScaler()

#分别对训练和测试数据的特征以及目标值进行标准化处理
X_train=ss_X.fit_transform(X_train)
X_test=ss_X.transform(X_test)
y_train=ss_y.fit_transform(y_train.reshape(-1,1))
y_test=ss_y.transform(y_test.reshape(-1,1))

四、模型训练及评估

#使用线性回归模型LinearRegression和SGDRegressor分别对波士顿房价数据进行训练及预测
from sklearn.linear_model import LinearRegression
lr=LinearRegression()
#使用训练数据进行参数估计
lr.fit(X_train,y_train)
#回归预测
lr_y_predict=lr.predict(X_test)

#SGDRegressor
from sklearn.linear_model import SGDRegressor
#默认配置初始化线性回归器
sgdr=SGDRegressor()
#使用训练数据进行参数估计
sgdr.fit(X_train,y_train)
#对测试数据进行回归预测
sgdr_y_predict=sgdr.predict(X_test)
#模型评估
#使用LinearRegression模型自带的评估模块,并输出评估结果
print("lr_score:",lr.score(X_test,y_test))
#R-square,MSE,MAE评估LinearRegression回归性能
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
#r2_score
print("r2_score:",r2_score(y_test,lr_y_predict))
#MSE
print("MSE:",mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))
#MAE
print("MAE:",mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))

这里写图片描述

#使用LinearRegression模型自带的评估模块,并输出评估结果
print("sgdr_score:",sgdr.score(X_test,y_test))
#R-square,MSE,MAE评估LinearRegression回归性能
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
#r2_score
print("r2_score:",r2_score(y_test,sgdr_y_predict))
#MSE
print("MSE:",mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict)))
#MAE
print("MAE:",mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict)))

这里写图片描述