我已经使用两个分类器(例如 naivebayes 和 SMO)对数据进行了训练和测试。现在我需要使用堆叠来组合它们。我需要知道如何执行堆叠以及我的基本级别分类器和元级别分类器应该是什么。
问问题
1300 次
2 回答
2
听起来您想要的是集成学习而不是堆叠。在一个集成中,您将使用这两个分类器来做出决策并组合这些决策。
堆叠是一个过程,其中一级分类器的输出用作下一级分类器的输入。也就是说,一些分类器的预测是其他分类器的特征。为此,您需要使用第一个分类器的输出作为输入重新训练其中一个模型。
应该在哪里使用哪一个分类器取决于您的特定应用程序。同样,如何做到这一点取决于您用来训练这些分类器的系统。
于 2013-04-04T08:21:23.407 回答
0
要选择用于堆叠的基层分类器,请考虑可能在特征子集或数据子集上学习的各种分类器。例如,您的基本分类器可以是 K-NN、随机森林和朴素贝叶斯。对于元级分类器,我们希望选择一个能够基于基础级预测作为特征来很好地学习的分类器。一个好的候选者是逻辑回归。
以mlxtend库为例,我们有:
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.ensemble import RandomForestClassifier
from mlxtend.classifier import StackingClassifier
clf1 = KNeighborsClassifier(n_neighbors=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = GaussianNB()
lr = LogisticRegression()
sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
meta_classifier=lr)
有关堆叠分类器和回归器的示例,请参阅 mlxtend文档页面。
于 2017-07-02T18:43:20.870 回答