Python中的嶺迴歸實例

WBOY
發布: 2023-06-10 22:39:52
原創
1174 人瀏覽過

嶺迴歸是一種常用的線性迴歸方法,它在處理多重共線性問題時能夠取得比一般最小平方法迴歸更好的結果,同時也可以用於特徵選擇。

Python是一門強大的程式語言,使用Python進行嶺迴歸分析非常方便。本文將透過一個實例來介紹如何使用Python進行嶺迴歸分析。

首先,我們需要導入需要的庫,如下所示:

import pandas as pd
import numpy as np
from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
登入後複製

本實例使用的數據是Boston房價數據,該數據集包含了1970年代波士頓地區房屋的13個不同特徵及其價格的資訊。我們可以透過pandas函式庫中的read_csv函數將資料讀取進來,如下所示:

data = pd.read_csv('Boston.csv')
登入後複製

接著,我們需要將資料集分成訓練集和測試集。這可以使用scikit-learn庫中的train_test_split函數來實現,如下所示:

X = data.iloc[:, :-1].values
y = data.iloc[:, -1].values
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)
登入後複製

在訓練嶺回歸模型之前,我們需要對資料進行標準化處理,以確保在不同特徵取值範圍差異很大的情況下能夠比較他們對目標變數的影響。我們可以使用scikit-learn庫中的StandardScaler函數進行標準化處理,程式碼如下所示:

from sklearn.preprocessing import StandardScaler
sc_X = StandardScaler()
X_train = sc_X.fit_transform(X_train)
X_test = sc_X.transform(X_test)
登入後複製

然後我們可以定義一個嶺回歸模型,將其放入我們的訓練資料集中進行訓練,程式碼如下所示:

ridge = Ridge(alpha=0.1)
ridge.fit(X_train, y_train)
登入後複製

其中alpha值是超參數,需要透過調參來最佳化模型。我們可以透過在訓練集和測試集上評估預測結果來選擇最優的超參數。在本實例中,我們選擇針對alpha值進行交叉驗證來選擇最優的超參數,程式碼如下所示:

from sklearn.model_selection import GridSearchCV
ridge_params = {'alpha': [0.001, 0.01, 0.1, 1, 10]}
ridge_grid = GridSearchCV(estimator=Ridge(), param_grid=ridge_params, cv=10, scoring='neg_mean_squared_error')
ridge_grid.fit(X_train, y_train)
print("Best alpha:", ridge_grid.best_params_['alpha'])
登入後複製

透過交叉驗證,我們選擇最優的alpha值為0.1。

接下來,我們可以在測試集上進行預測,並評估預測結果。我們可以使用scikit-learn函式庫中的mean_squared_error函數計算均方誤差,程式碼如下所示:

y_pred = ridge.predict(X_test)
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)
登入後複製

最後,我們可以使用matplotlib函式庫來繪製預測值和真實值的散佈圖,以便更好地了解模型的預測效果。程式碼如下所示:

import matplotlib.pyplot as plt
plt.scatter(y_test, y_pred)
plt.xlabel("True Values")
plt.ylabel("Predictions")
plt.show()
登入後複製

總之,Python中的嶺迴歸分析非常方便,使用scikit-learn函式庫的函數能夠幫助我們輕鬆實現預測結果的評估和視覺化。

以上是Python中的嶺迴歸實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!