Python 整合10倍模型

Python 整合10倍模型,python,machine-learning,scikit-learn,ensemble-learning,Python,Machine Learning,Scikit Learn,Ensemble Learning,我可以将10倍的预测进行整合,并计算出最终的准确度 但是,当我在下面的代码中保存模型时,它只是从1-fold保存模型。 有这样10种型号 在机器学习的世界里,有没有像整合/组合/聚合10倍模型这样的东西 我想从10个模型(从10次折叠中获得)中制作最终模型,以便使用新数据进行预测 可能吗 ypred_all = np.ones((y.shape)) EnsembledModel = [] kfolds = KFold(n_splits=10) for train, test in kf.spl

我可以将10倍的预测进行整合,并计算出最终的准确度

但是,当我在下面的代码中保存模型时,它只是从1-fold保存模型。 有这样10种型号

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

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

可能吗

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)

常见误解:k-fold只是验证模型,而不是验证其参数

工作流程是:

  • 数据集分为训练和测试
  • 开发适用算法的特点和原因
  • 对于有前途的特征集和算法组合(OLS、SVM、NN等),在训练集的子集上进行训练-这是使用k折叠的地方。使用平均性能作为此模型的指标,即特征和算法的组合。此步骤的结果是选择最佳模型(但不是参数)
  • 在整个列车组上对所选模型进行培训。这将稍微改进模型,因为您有更多的数据。此步骤的结果是获得模型参数
  • 评估测试集的最终性能
  • 注:术语不同。有些人将测试集称为坚持,有些人对交叉验证集使用相同的术语。此外,对于一次性一次性一次性模型,您可能希望完全跳过步骤1和5

    您的问题的答案是第4步:一旦您找到了最佳车型,您就可以在整个列车组上进行训练。

    UPD:
    在某些情况下,使用不同的模型可以更好地处理数据集的不同部分。在某些情况下,您甚至可能在数据集的不同分区上使用相同的模型,例如,用一组线性函数近似多项式。多个模型的组合将为您提供一个整体。但是,如果褶皱是随机的,那就没有多大意义。

    如何计算10个估计值的最终精度?您是对单个预测进行平均,然后计算最终预测的准确度,还是先计算每个预测的准确度,然后对所有预测的准确度进行平均,以获得最终预测?如果采用第一种方法,则存在
    VotingClassifier
    ,原因如下:。如果是第二个,那么您将如何使用新数据上的10个模型进行预测?
    final\u accurity=accurity\u score(y,ypred\u all)
    或10s
    accurity\u score(test\u y,ypred)
    的平均值参见这一点,因为在您的
    y pred\u all
    中,测试中的每个样本只有一个值(因为您使用了K-Fold,所以每个样本将只进行一次测试)。我问的是新数据。对于一个新样本,您将有10个输出,然后您将如何为该单个样本做出最终的单个预测输出。在这个示例中,我想使用
    平均值
    是的,我同意您的方法。但是,是否有其他方法用于融合模型本身?如何?我如何组合多个模式ls作为一个整体?@mk1这个答案的要点是:在这种情况下,你没有。一旦你选择了最好的模型,你只需要在整个训练集中训练一个模型,没有任何折叠。