機器學習筆記對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

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