首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >整合10折模型

整合10折模型
EN

Stack Overflow用户
提问于 2019-12-04 22:56:54
回答 1查看 155关注 0票数 2

我可以集成10倍的预测,并计算出最终的准确率。

然而,当我在下面的代码中保存模型时,它只保存了一个1折的模型。这样的模型有10种。

在机器学习的世界里,有没有像集成/组合/聚合10倍模型这样的东西?

我想从10个模型(从10折获得)中制作最终模型,以便使用新数据进行预测。

有可能吗?

代码语言:javascript
复制
ypred_all = np.ones((y.shape))
EnsembledModel = []
kfolds = KFold(n_splits=10) 
for train, test in kf.split(x):
   train_x = features[train]
   train_y = labels[train]
   test_x = features[test]
   test_y = labels[test]
   model = clf.fit(train_x, train_y)  

   dump(model, 'model.joblib') 

   EnsembledModel.append (model)  ##???

   ypred = model.predict(test_x)
   ypred_all[test] = ypred


final_accuracy =  accuracy_score(y, ypred_all)


final_model = ...EnsembledModel ##??

final_predict = final_model.predict(x_new)
EN

回答 1

Stack Overflow用户

发布于 2019-12-05 00:00:39

常见的误解:K-折叠只是为了验证模型,而不是它的参数。

工作流程是:

  1. 数据集分为训练集和测试集。
  2. 开发适用算法的功能和原因
  3. ,用于有希望的特征集和算法(OLS,SVM,NN等)的组合,在训练集的子集上进行训练-这是您使用k折叠的地方。使用平均性能作为此模型的度量,即功能和算法的组合。作为这一步的结果,您选择了最佳模型(但不是在整个训练集上parameters).
  4. Train所选模型。这将使模型有所改进,因为您拥有更多的数据。作为这一步的结果,您将在测试集上获得模型parameters.
  5. Evaluate的最终性能。

注意:术语是不同的。有些人称测试集为抗拒测试集,有些人使用相同的术语来表示交叉验证集。此外,对于一次性使用的一次性模型,您可能希望完全跳过步骤1和5。

你的问题的答案是第4步:一旦你找到了最好的模型,你就可以在整个训练集上进行训练。

更新:在某些情况下,使用不同的模型可以更好地处理数据集的不同部分。在某些情况下,您甚至可以在数据集的不同分区上使用相同的模型,例如,使用一组线性函数来近似多项式。多个模型的组合将给你一个整体。然而,如果折叠是随机的,那就没有多大意义了。

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

https://stackoverflow.com/questions/59178865

复制
相关文章

相似问题

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