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

from sklearn.datasets import load_boston
boston = load_boston()
#输出数据描述
print(boston.DESCR)
#从sklearn.cross_validation导入数据分割器
from sklearn.cross_validation import train_test_split
#导入numpy 并重名为np
import numpy as np

X=boston.data
y=boston.target
print(X)
print("==============target===============")
print(y)
x_train,x_test,y_train,y_test = train_test_split(X,y,random_state=33,test_size=0.25)
#分析回归目标值的差异
print('最大值为:',np.max(boston.target))
print('最小值为:',np.min(boston.target))
print('均值为:',np.mean(boston.target))

print('训练数据:',x_train)
print('训练数据标签:',y_train)
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=np.array(y_train).reshape(-1,1)#一列
y_train=ss_y.fit_transform(y_train)
y_test=np.array(y_test).reshape(-1,1)#一列
y_test=ss_y.transform(y_test)
from sklearn.linear_model import  LinearRegression
#使用默认的配置初始化线性回归器LinearRegression
lr=LinearRegression()
#使用训练数据进行参数估计
lr.fit(x_train,y_train)
#对测试数据进行回归预测
lr_y_predict = lr.predict(x_test)

print(y_test[0:10])
print(lr_y_predict[0:10])
from sklearn.linear_model import  SGDRegressor
#使用默认的配置初始化线性回归器SGDRegressor
sgdr = SGDRegressor()
#使用训练数据进行参数估计
sgdr.fit(x_train,y_train)
sgdr_y_predict = sgdr.predict(x_test)
#使用LinearRegression模型自带的评估模块,输出结果
print("线性回归采用默认参数的评估为:",lr.score(x_test,y_test))
from sklearn.metrics import r2_score,mean_squared_error,mean_absolute_error
print('r2_score:',r2_score(y_test,lr_y_predict))
print('mean_squared_error:',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))
print('mean_absolute_error:',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))
#使用SGDRegressor模型自带的评估模块,输出结果
print("SGDRegressor模型为:",sgdr.score(x_test,y_test))
print('r2_score:',r2_score(y_test,sgdr_y_predict))
print('mean_squared_error:',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict)))
print('mean_absolute_error:',mean_absolute_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_predict)))

猜你喜欢

转载自blog.csdn.net/WJWFighting/article/details/81273026