0

Я пытаюсь использовать y_scores = OneVsRestClassifier (svm.SVC()). Предсказывает() на наборах данных как радужная оболочка и титаник. Проблема в том, что я я получаю y_scores как для непрерывного values.like радужки набора данных я получаю:OneVsRestClassifier (svm.SVC()). Предсказывает() дает постоянные значения

[[ -3.70047231 -0.74209097 2.29720159] 
[ -1.93190155 0.69106231 -2.24974856] 
..... 

Я использую OneVsRestClassifier для других моделей классификатора как Knn, RandomForest, наивного Байес и они дают соответствующие результаты в виде

[[ 0 1 0] 
[ 1 0 1]... 

etc на наборе диафрагмы. Пожалуйста, помогите.

+0

Код, который вы редактируете, чтобы включить минимальный рабочий пример, пожалуйста? – ncfirth

ответ

0

Ну, это просто неправда.

>>> from sklearn.multiclass import OneVsRestClassifier 
>>> from sklearn.svm import SVC 
>>> from sklearn.datasets import load_iris 
>>> iris = load_iris() 
>>> clf = OneVsRestClassifier(SVC()) 
>>> clf.fit(iris['data'], iris['target']) 
OneVsRestClassifier(estimator=SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0, 
    kernel='rbf', max_iter=-1, probability=False, random_state=None, 
    shrinking=True, tol=0.001, verbose=False), 
      n_jobs=1) 
>>> print clf.predict(iris['data']) 
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 
0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 
1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 
2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
2 2] 

может быть, вы назвали decision_function вместо (который будет соответствовать вашему выходному размеру, как и предсказать, как предполагается возвращать вектор, а не матрица). Затем SVM возвращает подписанные расстояния на каждую гиперплоскость, которая является ее решающей функцией с математической точки зрения.

Смежные вопросы