получение pred_proba недоступно при запуске моего кода - PullRequest
0 голосов
/ 09 июля 2020

Я строю алгоритм для небольшого набора данных (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, он отлично работает

1 Ответ

0 голосов
/ 09 июля 2020

Это потому, что логистическая регрессия c по умолчанию выводит вероятности. Выходные данные SVM по умолчанию являются двоичными (-1, 1), что определяется конструкцией самого алгоритма (поиск наилучшей разделяющей гиперплоскости и либо цель находится на одной, либо другой стороне).

Если вам нужна SVM для вывода вероятностей вам необходимо указать probability=True при создании экземпляра класса SVC.

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

Это будет внутренне использовать другой механизм для получения вероятностного c вывода от SVM.

...