Stacking思想的Python3代码再现

Stacking思想的代码再现

本文源于对Stacking思想的理解,尝试使用Python3.5,在Spyder中将其思想转化为代码实现,并将本文内容安排如下:
1.Stacking原理(宏观和微观解释)
2.使用本文Stacking代码测试Iris数据集

  1. Stacking原理图
    1.1.网上广为接受的原理图:(宏观)
    在这里插入图片描述
    【宏观图】将训练集划分成了X_train和X_test两个集合。然后将X_train按k折交叉验证(这里k=5)来均等划分,蓝色的4折作为小的X_train’,橙色的1折作为小的X_test’,使用model1对X_train进行k=5的交叉验证,X_train’训练模型后使用,X_test’来做交叉验证的测试对模型进行调参。即:外圈循环为5个模型,内圈循环做5折交叉验证:5折中随机选定一折做小训练街,其余做测试集合,训练模型时,分别传入X_test’和整个X_test进行训练。如此重复划分和训练验证测试5次。针对每一个模型会有两个输出的label(即new feature):5组橙色的Learn和5组绿色的Predict。对于每一个模型预测出来的5组橙色的Learn沿着纵向拼接成一个列向量即;对于每一个模型预测出来的5组绿色的Predict将其取Average记为predict’;5个模型拼接出5组橙色的new feature,每组new feature由橙色的5个Learn纵向拼接成,将5组橙色的new feature沿着横向拼接起来作为新的new_feature_X_train。5个模型拼接出5组绿色的Predict,沿着横向进行拼接作为新的new_feature_X_test。
    1.2.原理图剖析(微观)
    为了方便读着理解如下将每个模型的内圈循环操作进行放大,方便理解,后续简称【局部图】。实质上就是一个k=5的k折交叉验证。 最后将每一次训练验证的label沿着列的方向重新拼接起来作为一整列的新特征。同步的由于每一轮交叉验证中X_test都会传入模型做预测产生了5组绿色的label列,这里对5组label列取平均记为predict’。
    在这里插入图片描述
    1.3.使用新的模型来训练训练集new_feature_X_train,传入标签为
  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个用Python编写的Stacking集成的示例代码: ```python from sklearn.linear_model import LogisticRegression from sklearn.ensemble import RandomForestClassifier from sklearn.neighbors import KNeighborsClassifier from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.ensemble import StackingClassifier # 加载数据 X, y = load_data() # 划分训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=0) # 定义基础模型 model1 = RandomForestClassifier(random_state=0) model2 = KNeighborsClassifier() # 定义元模型 meta_model = LogisticRegression() # 创建Stacking集成模型 stacking_model = StackingClassifier(estimators=[('rf', model1), ('knn', model2)], final_estimator=meta_model) # 在训练集上训练Stacking模型 stacking_model.fit(X_train, y_train) # 在测试集上进行预测 y_pred = stacking_model.predict(X_test) # 计算准确率 accuracy = accuracy_score(y_test, y_pred) print("Accuracy:", accuracy) ``` 在这个示例中,我们使用了RandomForestClassifier和KNeighborsClassifier作为基础模型,并使用LogisticRegression作为元模型。通过调用StackingClassifier构造函数,传入基础模型和元模型,创建了一个Stacking集成模型。然后使用fit函数在训练集上训练模型,并使用predict函数在测试集上进行预测。最后,计算准确率作为性能评估指标。 请注意,这只是一个示例代码,实际使用时需要根据具体的数据和任务进行相应的调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值