Я работаю с красивым пакетом Python scikits.learn , чтобы обучить некоторые классификаторы распознаванию лиц по частям с помощью функции Гистограмма ориентированного градиента. Я успешно обучил линейный SVM распознавать определенную часть лица, но у меня странные проблемы с функцией predict_proba()
.
Я использую следующий обучающий код:
import numpy as np
from scikits.learn import svm
# Do some stuff to prepare DATA matrix of feature vector samples
# And LABELS vector of 1's and 0's for positive and negative samples.
clf = svm.SVC(kernel='linear',probability=True)
clf.fit(DATA, LABELS)
Но затем, когда я запускаю predict_proba([test_vector])
, я всегда вижу [[ 0.5 0.5 ]]
как вывод, то есть равномерную вероятность между моими двумя двоичными классами.
Как ни странно, когда я просто использую функцию predict()
, она работает довольно хорошо и, конечно, не может быть просто тривиально присваивать всем одинаковые вероятности. На тестовом изображении я получаю гораздо более плотные классификации «1» вокруг правильной части лица, а затем некоторые ожидаемые шумные классификации «1» в других местах сцены, но преимущественно все классификации «0», как и ожидалось.
Что может быть причиной этой неисправности с predict_proba()
?