LDA作为Python中AdaBoost的基础学习者

LDA作为Python中AdaBoost的基础学习者,python,scikit-learn,classification,adaboost,Python,Scikit Learn,Classification,Adaboost,我正在使用AdaBoost进行多类分类,以基本学习者作为鉴别标准(线性或二次)。我在scikit learn或任何其他库中都找不到任何功能来实现这一点,我该怎么做?虽然scikit learn的AdaBoostClassifier允许您选择一个基本估计器(请参阅),但它需要估计器支持样本权重。请看一下: 不幸的是,线性判别分析和二次判别分析都不属于这一类。下面是一个玩具示例: from sklearn.ensemble import AdaBoostClassifier from sklearn

我正在使用AdaBoost进行多类分类,以基本学习者作为鉴别标准(线性或二次)。我在scikit learn或任何其他库中都找不到任何功能来实现这一点,我该怎么做?

虽然scikit learn的
AdaBoostClassifier
允许您选择一个基本估计器(请参阅),但它需要估计器支持
样本权重
。请看一下:

不幸的是,
线性判别分析
二次判别分析
都不属于这一类。下面是一个玩具示例:

from sklearn.ensemble import AdaBoostClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis as QDA
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target)

clf = AdaBoostClassifier(base_estimator=LDA())
clf.fit(X_train, y_train)
您将看到如下所示的回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "//anaconda/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py", line 411, in fit
    return super(AdaBoostClassifier, self).fit(X, y, sample_weight)
  File "//anaconda/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py", line 128, in fit
    self._validate_estimator()
  File "//anaconda/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py", line 429, in _validate_estimator
    % self.base_estimator_.__class__.__name__)
ValueError: LinearDiscriminantAnalysis doesn't support sample_weight.

尽管scikit learn的
AdaBoostClassifier
允许您选择基本估计器(请参阅),但它需要估计器支持
样本权重
。请看一下:

不幸的是,
线性判别分析
二次判别分析
都不属于这一类。下面是一个玩具示例:

from sklearn.ensemble import AdaBoostClassifier
from sklearn.discriminant_analysis import LinearDiscriminantAnalysis as LDA
from sklearn.discriminant_analysis import QuadraticDiscriminantAnalysis as QDA
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

iris = load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target)

clf = AdaBoostClassifier(base_estimator=LDA())
clf.fit(X_train, y_train)
您将看到如下所示的回溯:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "//anaconda/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py", line 411, in fit
    return super(AdaBoostClassifier, self).fit(X, y, sample_weight)
  File "//anaconda/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py", line 128, in fit
    self._validate_estimator()
  File "//anaconda/lib/python2.7/site-packages/sklearn/ensemble/weight_boosting.py", line 429, in _validate_estimator
    % self.base_estimator_.__class__.__name__)
ValueError: LinearDiscriminantAnalysis doesn't support sample_weight.

我在做一个项目,我想比较AdaBoost在不同类型的弱学习者的数据集上的性能。我曾在某个地方读到,LDA、QDA、感知机等确实属于弱学习者,因此提出了这个问题。我想我得用点别的东西了,谢谢!我在做一个项目,我想比较AdaBoost在不同类型的弱学习者的数据集上的性能。我曾在某个地方读到,LDA、QDA、感知机等确实属于弱学习者,因此提出了这个问题。我想我得用点别的东西了,谢谢!