Python中的梯度提升(GBM)演算法實例

WBOY
發布: 2023-06-10 16:51:07
原創
1754 人瀏覽過

Python中的梯度提升(GBM)演算法實例

梯度提升(GBM)是一種機器學習方法,透過迭代地訓練模型來逐步減少損失函數。它在回歸和分類問題中都有良好的應用效果,並且是一種強大的集成學習演算法。本文將以Python為例,介紹如何使用GBM演算法對一個迴歸問題進行建模。

首先我們需要導入一些常用的Python庫,如下所示:

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

本次案例中,我們將使用Car Evaluation資料集進行建模,該資料集包含6個屬性和1個類別變數。我們將用這些屬性變數來預測車輛的價格。首先,我們需要將CSV檔案讀入Pandas DataFrame中,如下所示:

data=pd.read_csv("car_data_1.csv")
登入後複製

接下來,我們需要將原始資料分割為訓練集和測試集。我們將80%的資料作為訓練集,20%的資料作為測試集。

train_data, test_data, train_label, test_label = train_test_split(data.iloc[:,:-1], data.iloc[:,-1], test_size=0.2, random_state=1)
登入後複製

然後我們需要進行特徵工程,將分類變數編碼成啞變數(Dummy Variable)。這裡我們使用Pandas的get_dummies函數。

train_data = pd.get_dummies(train_data)
test_data = pd.get_dummies(test_data)
登入後複製

現在我們可以建立一個GBM模型。首先,我們初始化模型,然後進行參數設定。在這裡,我們設定了模型的迭代次數(n_estimators)為100,並將學習率參數(learning_rate)設為0.1。

model = GradientBoostingRegressor(n_estimators=100, learning_rate=0.1, random_state=1)
登入後複製

接下來,我們用訓練集資料來擬合模型:

model.fit(train_data,train_label)
登入後複製

接下來,我們使用測試集資料評估模型的效能。在這裡,我們使用均方誤差(MSE)來評估模型的表現。程式碼如下所示:

pred=model.predict(test_data)
mse=mean_squared_error(test_label, pred)
print("MSE:",mse)
登入後複製

最後,我們可以進一步探索GBM模型中變數的重要性。我們可以使用sklearn的feature_importances_函數來得到。

feat_imp = pd.Series(model.feature_importances_, index=train_data.columns).sort_values(ascending=False)
print(feat_imp)
登入後複製

總之,本文示範如何使用Python的sklearn函式庫實作GBM演算法。我們使用Car Evaluation資料集來預測車輛的價格,並評估了模型的性能,我們還可以獲得變數的重要性分數。 GBM在機器學習中具有良好的應用效果,並且是一種強大的整合學習演算法。

以上是Python中的梯度提升(GBM)演算法實例的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板