【问题标题】:Aggregate training results to predits将训练结果汇总到预测
【发布时间】:2018-08-22 01:48:00
【问题描述】:

训练模型时,结果取决于抽样。为了获得更好的结果,您可以重复训练(在另一个随机创建的训练样本中,使用FfoldsStratifiedKFold ...),以某种方式汇总结果并以这种方式获得比创建的更稳健的结果仅在特定情况下。 问题:它是否已经在 sklearn 或类似中实现?。抱歉,这是一个直截了当的问题,我还没有看到一个简单的解决方案。

我看到有一个名为 cross_val_predict 的函数,但是我快速浏览源代码的第一印象是它预测的次数与火车一样多,我只想预测火车,所以我可以选择,以某种方式汇总结果,然后再进行预测,而不是再次重复整个训练过程。

【问题讨论】:

  • 我认为你混淆了一些概念,可能需要做一些阅读。你用的是什么型号?如果您的训练模型依赖于训练/测试拆分(您可以使用交叉验证来识别),那么您过度拟合并且需要调整您的超参数以避免这种情况。作为一种替代策略:sklearn 中是否有一些东西可以聚合过度拟合的分类器以产生更健壮的分类器?是的,它被称为随机森林!
  • 您的正确集成方法做得很好。非常感谢!
  • 没问题。一旦你尽可能地推动了随机森林,你也许可以使用你在笔记本中学到的知识来创建你自己的集成分类器。例如,训练 RF、朴素贝叶斯和逻辑回归模型,然后设计一种集成结果的方法。例如,您可以为您的特征和 3 个 predict.proba() 结果拟合 2 级分类器(log.reg.)。

标签: python-3.x scikit-learn cross-validation


【解决方案1】:

到目前为止,我认为最好的选择是ensemblers in sklearn

我将之前使用的解决方案留在这里。我很确定可以改进(如Ensemblers in sklearn 之前提到的)会更好。我把https://github.com/rafaelvalero/aggreating_predictions_sklearn放在这里,我留下了一个笔记本和例子(使用鸢尾花数据库),以防任何人都可以玩耍并详细了解如何做。

该解决方案将训练模型(并行,使用 joblib),腌制训练的模型(来自 SKlearn 的模型),存储结果(使用 joblib 转储),然后将恢复它们以创建预测(并行,使用 joblib)以后会聚合。

【讨论】:

    猜你喜欢
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 2018-07-29
    • 2023-04-08
    • 2018-02-22
    • 2020-01-01
    • 2018-11-05
    • 2021-02-22
    相关资源
    最近更新 更多