Я выполняю задачу классификации текста. Теперь я хочу использовать ensemble.AdaBoostClassifier с LinearSVC как base_estimator. Однако, когда я пытаюсь запустить код
clf = AdaBoostClassifier(svm.LinearSVC(),n_estimators=50, learning_rate=1.0, algorithm='SAMME.R')
clf.fit(X, y)
Произошла ошибка. TypeError: AdaBoostClassifier with algorithm='SAMME.R' requires that the weak learner supports the calculation of class probabilities with a predict_proba method
Первый вопрос Не может ли svm.LinearSVC() вычислить вероятности классов? Как подсчитать вероятности?
Затем меняем параметр algorithm и снова запускаем код.
clf = AdaBoostClassifier(svm.LinearSVC(),n_estimators=50, learning_rate=1.0, algorithm='SAMME')
clf.fit(X, y)
На этот раз TypeError: fit() got an unexpected keyword argument 'sample_weight'. Как сказано в AdaBoostClassifier, Sample weights. If None, the sample weights are initialized to 1 / n_samples. Даже если я назначу целое число n_samples, также возникла ошибка.
Второй вопрос: Что означает n_samples? Как решить эту проблему?
Надеюсь, что кто-нибудь сможет мне помочь.
Согласно комментарию @jme, однако, после попытки
clf = AdaBoostClassifier(svm.SVC(kernel='linear',probability=True),n_estimators=10, learning_rate=1.0, algorithm='SAMME.R')
clf.fit(X, y)
Программа не может получить результат, и память, используемая на сервере, не изменяется.
Третий вопрос:, как я могу сделать AdaBoostClassifier работать с SVC как base_estimator?