机器学习笔记对sklearn的线性回归器进行学习

#-*-coding:utf-8-*-

from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LinearRegression
from sklearn.linear_model import SGDRegressor
from sklearn.metrics import r2_score,mean_absolute_error,mean_squared_error

#获取美国波士顿房价数据
boston = load_boston()
#查看数据
#print(boston.DESCR)
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("max traget",np.max(boston.target))
# print("min target",np.min(boston.target))
# print("average target",np.mean(boston.target))

#分别初始化对特征和目标值的标准化器
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)

#使用默认配置初始化线性回归器LinearRegression
lr=LinearRegression()
#使用训练数据进行参数估计
lr.fit(X_train,y_train)
#对测试数据进行回归预测
lr_y_predict=lr.predict(X_test)

#初始化线性回归器SGDRegressor
sgdr=SGDRegressor()
#训练
sgdr.fit(X_train,y_train)
#测试数据回归预测
sgdr_y_pridict = sgdr.predict(X_test)


#使用三种回归评价机制以及两种调用R-squared评价模块的方法,对本节模型的回归性能做出评价
print("linearRegression score is",lr.score(X_test,y_test))
#使用r2_score,mean_absolute_error,mean_squared_error进行性能评估
#r2_score评估
print("R-squared LinearRegression score  " ,r2_score(y_test,lr_y_predict))
#mean_squared_error评估
print('mean_squared_error LinearRegression score  ',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))
#mean_absolute_error评估
print('mean_absolute_error LinearRegression score  ',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(lr_y_predict)))

#对SGDRegressor模型自带的评估模块,对输出进行评估
print('SGDRegressor score is ',sgdr.score(X_test,y_test))

#r2_score评估
print("R-squared SGDRegressor score  " ,r2_score(y_test,sgdr_y_pridict))
#mean_squared_error评估
print('mean_squared_error SGDRegressor score  ',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_pridict)))
#mean_absolute_error评估
print('mean_absolute_error SGDRegressor score  ',mean_squared_error(ss_y.inverse_transform(y_test),ss_y.inverse_transform(sgdr_y_pridict)))

作者:WangB

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章