当 运行 我的代码时,获取 predict_proba 不可用

getting predict_proba is not available when run my code

我正在为不太大的数据集(1000 条记录)构建算法

但它有大约 2000 列

我遇到了这个错误

  File "C:\Users\User\anaconda3\lib\site-packages\sklearn\svm\_base.py", line 603, in _check_proba
    raise AttributeError("predict_proba is not available when "

AttributeError: predict_proba is not available when  probability=False

这是我的代码

multilabel_binarizer = MultiLabelBinarizer()
multilabel_binarizer.fit(df['Result'])
y = multilabel_binarizer.transform(df['Result'])
    
X = df[df.columns.difference(["Result"])]

xtrain, xval, ytrain, yval = train_test_split(X, y, test_size=0.2, random_state=9)
lr = SVC(gamma='auto')
clf = OneVsRestClassifier(lr)
clf.fit(xtrain, ytrain)
y_pred = clf.predict(xval)

如何避免此类错误

当我 运行 LogisticRegression 的相同代码时它工作正常

这是因为逻辑回归默认输出概率。 SVM 的默认输出是二进制 (-1, 1),这是由算法本身的设计给出的(找到最佳分离超平面,目标在一侧或另一侧)。

如果要SVM输出概率,需要在实例化SVC时指定probability=True class。

lr = SVC(gamma='auto', probability=True)

这将在内部使用不同的机制从 SVM 获取概率输出。