在mlxtend库中,有一个用于堆叠的集成学习元分类器,称为"StackingClassifier“。
下面是一个StackingClassifier函数调用的示例:
sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
meta_classifier=lr)这里的meta_classifier是什么?它是用来做什么的?
发布于 2018-09-10 10:07:13
什么是堆叠?
堆叠是一种集成学习技术,通过元分类器组合多个分类模型。基于完整的训练集训练单个分类模型;然后,基于集成中单个分类模型的输出-元特征-拟合元分类器。
因此,meta_classifier参数可以帮助我们选择适合各个模型输出的classifier。
示例
假设您已经使用了3个二进制分类模型,例如LogisticRegression, DT & KNN用于堆叠。假设0, 0, 1是模型预测的类。现在我们需要一个classifier,它将对预测值进行多数投票。这个分类器就是meta_classifier。在本例中,它将选择0作为预测类。
您还可以将其扩展到prob值。
有关更多信息,请参阅mlxtend-API
发布于 2019-06-12 13:28:11
元分类器是一个接受模型的所有预测值的分类器。在你的例子中,你有三个分类器clf1,clf2,clf3,假设clf1是朴素贝叶斯,clf2是随机森林,clf3是svm。现在,对于数据集中的每个数据点x_i,您的所有三个模型都将运行h_1(x_i),h_2(x_i),h_3(x_i),其中h_1,h_2,h_3对应于clf1,clf2,clf3的函数。现在,这三个模型将给出三个预测的y_i值,所有这些都将并行运行。现在,使用这些预测值训练一个模型,该模型称为元分类器,在您的情况下是逻辑回归。
因此,对于新的查询点(x_q),它将计算为h^'(h_1(x_q),h_2(x_q),h_3(x_q)),其中h^'(h破折号)是计算y_q的函数。
元分类器或集成模型的优势在于,假设clf1的准确率为90%,clf2的准确率为92%,clf3的准确率为93%。因此,最终模型的准确率将高于93%,这是使用元分类器进行训练的。这些堆叠分类器在kaggle补全中广泛使用。
发布于 2020-07-26 19:16:03
meta_classifier只是一个分类器,它通过使用这些预测作为特征,在所有预测中做出最终预测。因此,它采用各种分类器预测的类,并选择最终一个作为您需要的结果。
下面是StackingClassifier的一个不错而简单的演示:

https://stackoverflow.com/questions/52250025
复制相似问题