我正在使用漂亮的 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()
?