【问题标题】:What is the best way to combine sklearn classifiers that are trained separately?结合单独训练的 sklearn 分类器的最佳方法是什么?
【发布时间】:2021-09-10 01:27:21
【问题描述】:
这是场景:
我想结合使用不同数据训练的三个 scikit learn 分类器(例如:3 个 SVM 分类器),但最终模型(实际预测实例的模型)需要是一个集成/堆叠或一个简单考虑的模型三个辅助分类器。
让分类器为 SVM1、SVM2 和 SVM3 以及训练 TS1、TS2 和 TS3 的可用子集。
SVM1 将配备 TS1;
SVM2 将配备 TS2;
并且 SVM3 将配备 TS3。
将预测新实例的最终模型需要是 SVM1、SVM2 和 SVM3 的集合。
我不想用相同的数据来拟合所有 3 种辅助方法。我想将整个训练数据分成子集(TS1、TS2、TS3),并用不同的子集拟合每个辅助分类器。
有什么想法吗?
【问题讨论】:
标签:
scikit-learn
text-classification
ensemble-learning
【解决方案1】:
如果您有 1 个数据集和 3 个 SVM 模型,您可以使用来自 Scikit-Learn 的 Voting Regressor,它将在相同数据上训练 3 个不同的 SVM 模型,并通过取其预测的平均值来组合它们。但是你想在 3 个不同的数据集上训练 3 个SVM 模型,你必须自己投票。像这样:
model1 = SVR()
model2 = SVR()
model3= SVR()
model1.fit(TS1_x, TS1_y)
model2.fit(TS2_x, TS2_y)
model3.fit(TS3_x, TS3_y)
pred1 = model1.predict(test)
pred2 = model2.predict(test)
pred3 = model3.predict(test)
finalpred = (pred1 + pred2 + pred3) / 3