sklearn CalibratedClassifierCV 和 SVM 出错
error with sklearn CalibratedClassifierCV and SVM
我想结合使用 sklearn 的 CalibratedClassifierCV 和 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()))
。
如果你想使用sigmoidal校准,你也可以做SVC(probability=True)
而不是使用CallibratedClassifierCV
。
我认为我们应该修复 SVC 决策函数。
我想结合使用 sklearn 的 CalibratedClassifierCV 和 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()))
。
如果你想使用sigmoidal校准,你也可以做SVC(probability=True)
而不是使用CallibratedClassifierCV
。
我认为我们应该修复 SVC 决策函数。