用線性回歸簡單預測波士頓房價


這次我們會用線性回歸來預測波士頓的房價

首先是導入波士頓房價的數據,這是sklearn中的datasets自帶的

from sklearn import datasets
boston = datasets.load_boston()

先用key方法查看數據集

print(boston.keys())

得到結果

dict_keys(['data', 'target', 'feature_names', 'DESCR'])

這里的data有13個維度,target就是我們要預測的房價,接下來再查看feature_names

print(boston['feature_names'])
['CRIM' 'ZN' 'INDUS' 'CHAS' 'NOX' 'RM' 'AGE' 'DIS' 'RAD' 'TAX' 'PTRATIO' 'B' 'LSTAT']

其中'RM'列就是我們需要的房間數,接下為了方便處理,我們將其轉為DataFrame類型,並進行數據划分得到訓練集和測試集

data = pd.DataFrame(boston['data'],columns=boston['feature_names'])
x = pd.DataFrame(data['RM'],columns=['RM'])
y = pd.DataFrame(boston['target'],columns=['target'])
x_train,x_test,y_train,y_test = train_test_split(x,y,test_size=0.33, random_state=42)

接下來訓練線性回歸模型,並進行預測

lr = LinearRegression()
lr.fit(x_train,y_train)
y_pre = lr.predict(x_test)

為了評價模型的好壞,我們將從以下的均方誤差(MSE),均方根誤差(RMSE),平均絕對誤差(MAE),R Squared

from sklearn.metrics import r2_score
from sklearn.metrics import mean_squared_error 
from sklearn.metrics import mean_absolute_error 
print(r2_score(y_test,y_pre))
print(mean_absolute_error(y_test,y_pre))
print(mean_squared_error(y_test,y_pre))

結果為

0.4834590168919489
4.271512885857222
39.09105111486995

下面用python實現這四種評價指標

def MSE(y_test,y_pre):
    print(((y_test - y_pre)**2).sum() / len(y_pre))
def RMSE(y_test,y_pre):
    print((((y_test - y_pre)**2).sum() / len(y_pre))**0.5)
def MAE(y_test,y_pre):
    y1 = np.array(y_test)
    y2 = np.array(y_pre)
    print(np.sum(np.absolute(y1 - y2))/len(y1))
def r2_score_(y_test,y_pre):
    print(1 - ((y_test - y_pre)**2).sum() / ((y_test - y_test.mean())**2).sum())

MSE(y_test,y_pre)
MAE(y_test,y_pre)
r2_score_(y_test,y_pre)

結果為

target    39.091051
dtype: float64
4.271512885857222
target    0.483459
dtype: float64

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM