如何在多种不同类型的拟合分类器(如 SVM、决策树、神经网络等)上使用 AdaBoost



>我正在研究一个分类问题,并且有多个拟合的sklearn分类器,例如

svm = SVC().fit(X_train, y_train)
dt = tree.DecisionTreeClassifier(criterion='entropy',max_depth=4000).fit(X_train, y_train)
...
for i in range(num_of_models):
    m2 = create_model_for_ensemble(dummy_y_train.shape[1])
    m2.fit(X_train_array[i], dummy_y_train, epochs=150, batch_size=100, verbose=0)
    models.append(m2)
# m2 is a customized Neural Network Classifier, that has a custom predict function (m2.predict_classes)
# The above code is just an example, the point is - m2 is also a classifier.
... etc.
最初,它们

都获得相同的输入,并且都具有相同类型的输出,它们都可以预测我的一行数据的标签:

  label attribute_1 attribute_2  ... attribute_79
1     ?    0.199574    0.203156  ...     0.046898   
2     ?    0.201461    0.203837  ...     0.075002   
3     ?    0.209044    0.214268  ...     0.143278
...   ...       ...         ...  ...          ...

其中标签是介于 0 到 29 之间的整数。

我的目标是构建一个包含上述所有分类器(svm,dt,m2)的AdaBoost分类器,但我无法在Google上找到示例;每个示例都只是谈论多个不同的决策树,或多个不同(但相同类型)的分类器。

我知道这是可以做到的,对于数据帧的每一行(或数据点),必须调整每个分类器的权重,这并不要求它们都是同一类型的分类器 - 它们只需要有一个.predict方法。

那么我该怎么做呢?谁能给我举个例子?

要包含所有 clf [svm, dt, m2],请在第一阶段创建一个集成模型,然后将该集成模型作为 adaboost 的基础估计器。

尝试类似的东西!

from sklearn import datasets
from sklearn.ensemble import AdaBoostClassifier,VotingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC

from sklearn.model_selection import train_test_split
X_train, xtest, y_train, y_eval = train_test_split(X, y, test_size=0.2, random_state=42)
iris = datasets.load_iris()
X, y = iris.data[:, 1:3], iris.target
votingClf = VotingClassifier([('clf1',SVC(probability=True)),('clf2',DecisionTreeClassifier())],voting='soft') #
adaBoostClassifier = AdaBoostClassifier(base_estimator = votingClf)
adaBoostClassifier.fit(X,y)

相关内容

  • 没有找到相关文章

最新更新