首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >集成技术

集成技术
EN

Stack Overflow用户
提问于 2021-09-09 16:07:06
回答 1查看 61关注 0票数 0

我想将权重分配给多个模型,并创建一个单一的集成模型。我想使用我的输出作为新的机器学习算法的输入,该算法将学习正确的权重。但是,如何将多个模型的输出作为新的ML算法的输入,因为我得到的输出如下

代码语言:javascript
运行
复制
preds1=model1.predict_prob(xx)
[[0.28054154 0.35648097 0.32954868 0.03342881]
 [0.20625692 0.30749627 0.37018309 0.11606372]
 [0.28362306 0.33325501 0.34658685 0.03653508]
 ...

 preds2=model2.predict_prob(xx)
[[0.22153498 0.30271243 0.26420254 0.21155006]
 [0.32327647 0.39197589 0.23899729 0.04575035]
 [0.18440374 0.32447016 0.4736297  0.0174964 ]
 ...

如何从这2个或更多模型的输出中生成单个数据帧?

下面给出了最简单的方法,但我想将输出提供给不同的ML算法来学习权重。

代码语言:javascript
运行
复制
model = LogisticRegression()
        model.fit(xx_train, yy_train)
        preds1 = model.predict_proba(xx_test)
     

        model = KNeighborsClassifier(n_neighbors=5, metric='minkowski', p=2 )
        model.fit(xx_train, yy_train)
        preds2 = model.predict_proba(xx_test)
        
        # Each weight is evaluated by calculating the corresponding score
        for i in range(len(weights)):
         final_inner_preds = np.argmax(preds1*weights[i]+ preds2*(1-weights[i]), axis=1)
       scores_corr_wts[i]+= accuracy_score(yy_test, final_inner_preds)
EN

回答 1

Stack Overflow用户

发布于 2021-09-09 17:37:45

在sklearn中,您可以使用StackingClassifier。这应该可以满足您的需求。

  1. 创建基本模型的定义列表

base_models = [('SVC', LinearSVC(C = 1)),('RF',RandomForestClassifier(n_estimators=500))]

  1. 实例化您的元学习者

meta_model = LogisticRegressionCV()

  1. 实例化堆叠模型

stacking_model = StackingClassifier(estimators=base_models, final_estimator=meta_model, passthrough=True, cv=3)

  1. Fit和predict
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69121497

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档