線性回歸預測波士頓房價
阿新 • • 發佈:2019-03-05
max min tex grid frame sta stat sha repr
預測波士頓的房價,上次已經通過房間數目預測了房價,這次用多元線性回歸預測。
根據之前推導的多元線性回歸的參數
接下來是多元線性回歸的代碼實現
def LinearRegression_(x,y): np.array(x) np.array(y) a = (np.linalg.inv(x.T.dot(x))).dot(x.T).dot(y)
上次大致了解了得個feature的name。下面是‘ZN’和‘RM’的散點圖(由於我比較懶所以只實現這兩個)
我們可以看出每個特征的數據範圍相差較大,為了加快梯度下降求最優解的速度,將它們進行歸一化處理
from sklearn import preprocessing min_max_scaler = preprocessing.MinMaxScaler() #分別對訓練和測試數據的特征以及目標值進行標準化處理 boston[‘data‘]=min_max_scaler.fit_transform(boston[‘data‘]) boston[‘target‘]=min_max_scaler.fit_transform(boston[‘target‘].reshape(-1,1))
在對y進行標準化的時候會報錯,因此要對boston[‘target‘]reshape()。下面就是進行數據劃分和預測
x = pd.DataFrame(boston[‘data‘],columns=boston[‘feature_names‘]) 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)
這裏我們用網格搜索法進行調參。我們用GridSearchCV,它存在的意義就是自動調參,只要把參數輸進去,就能給出最優化的結果和參數。但是這個方法適合於小數據集,一旦數據的量級上去了,很難得出結果。
param = {‘fit_intercept‘:[True,False],‘normalize‘:[True,False],‘copy_X‘:[True,False]} grid = GridSearchCV(estimator=lr, param_grid=param, cv=5) grid.fit(x_train,y_train) print(grid.score(x_test,y_test))
最後得分
0.7258515818230062
線性回歸預測波士頓房價