sklearn CallibratedClassifierCV 和 SVM 的错误



我想将sklearn的CallibratedClassifierCV与sklearn的SVC结合使用,对多类(9个类)预测问题进行预测。但是,当我运行它时,出现以下错误。相同的代码在不同的模型(即RandomForestCalssifier)上运行不会有问题。

kf = StratifiedShuffleSplit(y, n_iter=1, test_size=0.2)
clf = svm.SVC(C=1,probability=True)            
sig_clf = CalibratedClassifierCV(clf, method="isotonic", cv=kf)
sig_clf.fit(X, y)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/g/anaconda/lib/python2.7/site-packages/sklearn/calibration.py", line 166, in fit
    calibrated_classifier.fit(X[test], y[test])
  File "/home/g/anaconda/lib/python2.7/site-packages/sklearn/calibration.py", line 309, in fit
    calibrator.fit(this_df, Y[:, k], sample_weight)
IndexError: index 9 is out of bounds for axis 1 with size 9
这是

SVC使用一对一策略的问题,因此决策函数具有形状(n_samples, n_classes * (n_classes - 1) / 2)。一种可能的解决方法是CallibratedClassifierCV(OneVsRestClassifier(SVC())) .如果要使用S 形校准,也可以执行SVC(probability=True)而不使用CallibratedClassifierCV

我认为我们应该修复 SVC 决策函数。

相关内容

  • 没有找到相关文章

最新更新