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中文網其他相關文章!