@Smeilz1
За любое развитие

Как понять в каком порядке выдается вероятность события?

Задаю модель на примере.
import numpy as np
X = np.array([[-1, -1, 2], [-2, -1, 4], [1, 1, 5], [2, 1, 2]]) #Тут массив из 3
y = np.array([2, 1, 1, 1])
from sklearn.svm import SVC
clf = SVC(probability=True) #Обязательно задать для расчета вероятностей
clf.fit(X, y)
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
    decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
    max_iter=-1, probability=True, random_state=None, shrinking=True,
    tol=0.001, verbose=False)
print(clf.predict([[-0.8, -1, 5]])) # И тут массив из 3
print(clf.predict_proba([[-0.8, -1, 5]]))

Получаю ответ:
[1] #К какому классу относим событие
[[ 0.47949123 0.52050877]] - #Вероятность классов
В хелпе указывается: Returns the probability of the sample for each class in the model. The columns correspond to the classes in sorted order, as they appear in the attribute classes_.
Как я понял predict_proba вероятности сортируются так, как они появляются в классе атрибута. Как это можно понять?
Очередность будет такая же как я указал y?
y = np.array([2, 1, 1, 1]) , то есть:
2 - 0.47949123%
1 - 0.52050877%
  • Вопрос задан
  • 356 просмотров
Решения вопроса 1
sgjurano
@sgjurano
Разработчик
После вызова метода clf.fit, аттрибут clf.classes_ заполнится информацией о лейблах классов, в том же порядке, в котором они будут в выдаче метода clf.predict_proba.
In [4]: svc = SVC()

In [5]: import numpy as np
   ...: X = np.array([[-1, -1, 2], [-2, -1, 4], [1, 1, 5], [2, 1, 2]]) #Тут массив из 3
   ...: y = np.array([2, 1, 1, 1])

In [6]: svc.fit(X, y)
Out[6]: 
SVC(C=1.0, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape='ovr', degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)

In [7]: svc.classes_
Out[7]: array([1, 2])
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы