iT邦幫忙

2023 iThome 鐵人賽

DAY 27
0
AI & Data

紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度系列 第 27

DAY 27 「Kaggle 房價預測」使用「模型融合」用到線性回歸、隨機森林和梯度提升樹啦~

  • 分享至 

  • xImage
  •  

/images/emoticon/emoticon01.gif總算用模型融合來實戰Kaggle 房價預測問題,看看能不能快速提升準確率~~~~
可以參考以下來加強什麼事必學的落地AI模型融合
DAY 16 「模型融合(Model Ensemble)」落地AI除了集成演算法外必學的另一種思路~
DAY 23 「投票法(Voting)」模型融合提高泛化的預測分類結果~
DAY 24 「平均法(Averaging)」模型融合來做回歸問題和分類問題啦~
DAY 25 「堆疊法(Stacking)」模型融合多個基模型的預測結果作為特征輸入來做回歸和分類啦~
DAY 26 「Blending」模型融合類似堆疊法的預測分類結果~

import numpy as np
import pandas as pd
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor, GradientBoostingRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 加載數據
train_data = pd.read_csv('train.csv')
test_data = pd.read_csv('test.csv')

# 提取特征和目標
X = train_data.drop('SalePrice', axis=1)
y = train_data['SalePrice']

# 劃分訓練集和驗證集
X_train, X_val, y_train, y_val = train_test_split(X, y, test_size=0.2, random_state=42)

# 訓練多個基模型
models = [
    LinearRegression(),
    RandomForestRegressor(n_estimators=100, random_state=42),
    GradientBoostingRegressor(n_estimators=100, random_state=42)
]

for model in models:
    model.fit(X_train, y_train)

# 獲取基模型的預測結果
preds_train = [model.predict(X_train) for model in models]
preds_val = [model.predict(X_val) for model in models]

# 使用元模型訓練
meta_X_train = np.vstack(preds_train).T
meta_X_val = np.vstack(preds_val).T

meta_model = LinearRegression()
meta_model.fit(meta_X_train, y_train)

# 獲取最終預測結果
meta_preds_val = meta_model.predict(meta_X_val)

# 評估性能
val_rmse = np.sqrt(mean_squared_error(y_val, meta_preds_val))
print(f'Validation RMSE: {val_rmse}')

使用了線性回歸、隨機森林和梯度提升樹三個不同的模型作為基模型,並使用線性回歸作為元模型進行模型融合,在訓練集上訓練了基模型,然後獲取了它們的預測結果。接著,將這些預測結果作為特征,使用線性回歸作為元模型進行訓練,元模型對驗證集進行預測,並評估性能~~~


上一篇
DAY 26 「Blending」模型融合類似堆疊法的預測分類結果~
下一篇
DAY 28 「Kaggle 鐵打尼號」來做模型融合快速提高預測啦~
系列文
紮實的ML機器學習原理~打造你對資料使用sklearn的靈敏度30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言