Python 整合10倍模型
我可以将10倍的预测进行整合,并计算出最终的准确度 但是,当我在下面的代码中保存模型时,它只是从1-fold保存模型。 有这样10种型号 在机器学习的世界里,有没有像整合/组合/聚合10倍模型这样的东西 我想从10个模型(从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
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只是验证模型,而不是验证其参数 工作流程是:
在某些情况下,使用不同的模型可以更好地处理数据集的不同部分。在某些情况下,您甚至可能在数据集的不同分区上使用相同的模型,例如,用一组线性函数近似多项式。多个模型的组合将为您提供一个整体。但是,如果褶皱是随机的,那就没有多大意义。如何计算10个估计值的最终精度?您是对单个预测进行平均,然后计算最终预测的准确度,还是先计算每个预测的准确度,然后对所有预测的准确度进行平均,以获得最终预测?如果采用第一种方法,则存在
VotingClassifier
,原因如下:。如果是第二个,那么您将如何使用新数据上的10个模型进行预测?final\u accurity=accurity\u score(y,ypred\u all)
或10saccurity\u score(test\u y,ypred)
的平均值参见这一点,因为在您的y pred\u all
中,测试中的每个样本只有一个值(因为您使用了K-Fold,所以每个样本将只进行一次测试)。我问的是新数据。对于一个新样本,您将有10个输出,然后您将如何为该单个样本做出最终的单个预测输出。在这个示例中,我想使用平均值是的,我同意您的方法。但是,是否有其他方法用于融合模型本身?如何?我如何组合多个模式ls作为一个整体?@mk1这个答案的要点是:在这种情况下,你没有。一旦你选择了最好的模型,你只需要在整个训练集中训练一个模型,没有任何折叠。