运行我的代码时无法获取 Predict_proba

asm*_*mgx 1 python machine-learning svm

我正在为不太大的数据集(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
Run Code Online (Sandbox Code Playgroud)

这是我的代码

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)
Run Code Online (Sandbox Code Playgroud)

如何避免此类错误

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

Mat*_*ava 5

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

如果您希望 SVM 输出概率,则需要probability=True在实例化SVC类时指定。

lr = SVC(gamma='auto', probability=True)
Run Code Online (Sandbox Code Playgroud)

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