我正在做一个文本分类任务。现在我想ensemble.AdaBoostClassifier
用LinearSVC
as 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?