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