LightGBM 進行回歸建模的流程
文章最前: 我是Octopus,這個名字來源于我的中文名–章魚;我熱愛編程、熱愛算法、熱愛開源。所有源碼在我的個人github ;這博客是記錄我學習的點點滴滴,如果您對 Python、Java、AI、算法有興趣,可以關注我的動態,一起學習,共同進步。
加載數據:
from pathlib import Path
import pandas as pdregression_example_dir = Path(__file__).absolute().parents[1] / "regression"
df_train = pd.read_csv(str(regression_example_dir / "regression.train"), header=None, sep="\t")
df_test = pd.read_csv(str(regression_example_dir / "regression.test"), header=None, sep="\t")
這里使用 pandas 加載訓練數據和測試數據。數據文件路徑是通過 Path 模塊構建的,假設數據存儲在項目目錄的 regression 文件夾中。
數據預處理
y_train = df_train[0]
y_test = df_test[0]
X_train = df_train.drop(0, axis=1)
X_test = df_test.drop(0, axis=1)
將數據分為特征 (X_train, X_test) 和標簽 (y_train, y_test)。
創建 LightGBM 數據集:
import lightgbm as lgblgb_train = lgb.Dataset(X_train, y_train)
lgb_eval = lgb.Dataset(X_test, y_test, reference=lgb_train)
將 pandas DataFrame 轉換為 LightGBM 所需的 Dataset 格式。
設置參數
params = {"boosting_type": "gbdt","objective": "regression","metric": {"l2", "l1"},"num_leaves": 31,"learning_rate": 0.05,"feature_fraction": 0.9,"bagging_fraction": 0.8,"bagging_freq": 5,"verbose": 0,
}
配置 LightGBM 的訓練參數,包括提升類型、目標函數、評估指標、葉子節點數、學習率等。
訓練模型
gbm = lgb.train(params, lgb_train, num_boost_round=20, valid_sets=lgb_eval, callbacks=[lgb.early_stopping(stopping_rounds=5)]
)
使用 train 方法進行訓練,指定評估數據集,并設置提前停止的回調函數以防止過擬合。
保存模型:
gbm.save_model("model.txt")
將訓練好的模型保存到文件。
預測和評估:
from sklearn.metrics import mean_squared_errory_pred = gbm.predict(X_test, num_iteration=gbm.best_iteration)
rmse_test = mean_squared_error(y_test, y_pred) ** 0.5
print(f"The RMSE of prediction is: {rmse_test}")
使用測試集進行預測,并計算預測結果的均方根誤差 (RMSE)。
這段代碼可以作為一個模板,用于基于 LightGBM 的回歸任務。確保你已經安裝了所需的庫 (pandas, scikit-learn, lightgbm) 并有合適的數據集。