scikit-learn 中多数投票的训练会重新训练分类器吗?

Posted

技术标签:

【中文标题】scikit-learn 中多数投票的训练会重新训练分类器吗?【英文标题】:Does the training of majority voting in scikit-learn will re-train the classifiers? 【发布时间】:2021-04-19 02:29:32 【问题描述】:

我很好奇 scikit-learn 中的多数投票训练是否会 重新训练分类器?

例如:

model_perceptron = CalibratedClassifierCV(Perceptron(max_iter=100,
                                                     random_state=rng),
                                          cv=3)

model_perceptron.fit(X_train, y_train)
model_svc = SVC(probability=True, gamma='auto',
                random_state=rng).fit(X_train, y_train)
model_bayes = GaussianNB().fit(X_train, y_train)
model_tree = DecisionTreeClassifier(random_state=rng).fit(X_train, y_train)
model_knn = KNeighborsClassifier(n_neighbors=1).fit(X_train, y_train)

voting_classifiers = [("perceptron", model_perceptron),
                      ("svc", model_svc),
                      ("bayes", model_bayes),
                      ("tree", model_tree),
                      ("knn", model_knn)]

model_voting = VotingClassifier(estimators=voting_classifiers).fit(
    X_train, y_train)

我已经训练了所有这些基础模型。

scikit-learn 是否仅使用我之前独立训练和测试过的已训练分类器? scikit-learn 的多数投票是否不考虑 预训练的分类器集作为输入?

或者,它会重新训练内部的基本模型吗?

【问题讨论】:

模型似乎被重新训练:scikit-learn.org/stable/modules/generated/…。特别是这一行:“在 VotingClassifier 上调用 fit 方法将拟合将存储在类属性 self.estimators_ 中的那些原始估计器的克隆” @jhso 确实如此;请将此作为答案发布,包括链接文档中的引用 @jhso 谢谢。您可以将其发布为答案,以便任何搜索的人都可以找到答案吗? 【参考方案1】:

转自上述cmets:

似乎模型已重新训练:https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html。我特别注意到这一行:

在 VotingClassifier 上调用 fit 方法将拟合 那些将存储在类属性中的原始估计器 self.estimators_

【讨论】:

那么,如果我们测量计算时间,它已经包括了所有基估计器的训练? 如果没有自己测试,我会这么说。时间与自己做相比如何?应该有点可比性。

以上是关于scikit-learn 中多数投票的训练会重新训练分类器吗?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Weka 中尝试使用多数投票

对每个项目进行投票后重新计算排名

如何使用 python scikit-learn 执行欠采样(正确的方法)?

随机森林

WSFC动态仲裁及投票调整1

随机森林原理介绍与适用情况(综述篇)