能给我一个stacking的python代码示例吗
时间: 2024-05-16 16:12:42 浏览: 87
当然可以,以下是一个简单的stacking代码示例:
```python
from sklearn.model_selection import KFold
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
import numpy as np
# 创建第一层模型
model1 = RandomForestClassifier(n_estimators=50, random_state=1)
model2 = GradientBoostingClassifier(n_estimators=50, random_state=1)
# 创建第二层模型
model3 = LogisticRegression()
# 加载数据集
X = np.array([[1,2,3],[4,5,6],[7,8,9],[10,11,12]])
y = np.array([0,1,1,0])
# 初始化第二层模型的输入集
meta_X = np.zeros((X.shape[0], 2))
# 使用K折交叉验证训练第一层模型并生成meta数据集
kf = KFold(n_splits=5, shuffle=True, random_state=1)
for train_index, test_index in kf.split(X):
X_train, X_test = X[train_index], X[test_index]
y_train, y_test = y[train_index], y[test_index]
model1.fit(X_train, y_train)
model2.fit(X_train, y_train)
meta_X[test_index, 0] = model1.predict(X_test)
meta_X[test_index, 1] = model2.predict(X_test)
# 训练第二层模型并进行预测
model3.fit(meta_X, y)
meta_pred = model3.predict(meta_X)
# 输出第二层模型的准确率
print('Final accuracy:', accuracy_score(y, meta_pred))
```
这个例子中,我们使用了两个基础分类器(随机森林和梯度提升树)和一个逻辑回归作为元学习器。我们使用K折交叉验证来生成第二层模型的输入,然后训练第二层模型并进行预测。