首选libsvm(python)中的一个类

时间:2011-01-21 08:52:52

标签: python svm libsvm classification

我刚刚开始在python中使用libsvm进行一些操作,并获得了一些简单的分类。

问题是我正在构建一个人脸检测系统,我想要一个非常低的错误拒绝率。另一方面,svm似乎优化了相同的错误拒绝和错误接受。我有什么选择?

如前所述,我对libsvm很新,所以要善良。 ;)

2 个答案:

答案 0 :(得分:2)

SVM通常不被认为是概率模型,而是最大判别模型。因此,我很难在我所知道的SVM的背景下制定你的问题。

此外,libSVM附带的Python绑定不是非常高效,也不会公开libSVM的所有选项。

也就是说,如果您愿意查看其他绑定,scikit-learn的svm绑定更丰富,并且会暴露一些可能派上用场的参数,例如weighted classes或{{3 }}。您可以更加重视不希望误分类的类。

此外,scikit的绑定暴露了weighted samples,但在SVM的情况下,我认为它依赖于libSVM的hack(因为SVM不具有概率),重新采样分类以具有置信区间关于预测。

答案 1 :(得分:1)

我一直在使用libSVM的python包装器,发现我可以使用边距计算置信度测量...请参阅下面的“predict_values_raw”函数。它返回一个实数值,大的正值表示它是一个类成员的高置信度,大的负值表明它不是一个类成员的高置信度;值接近于零表示它对分类没有信心。因此,不要调用'predict',而是调用'predict_values_raw'并应用低阈值(例如-2)以确保不拒绝任何真实的面孔

# Begin pseudo-code
import svm as svmlib

prob = svmlib.svm_problem(labels, data)
param = svmlib.svm_parameter(svm_type=svmlib.C_SVC, kernel_type = svmlib.RBF)
model = svmlib.svm_model(prob, param)

# get confidence
self.model.predict_values_raw(sample_to_classify)