喜欢libsvm(python)中的一个类
我刚开始在python中使用libsvm,并得到了一些简单的分类 问题是我正在构建一个人脸检测系统,我想要一个非常低的错误拒绝率。另一方面,svm似乎优化了相同的错误拒绝和错误接受。我有什么选择喜欢libsvm(python)中的一个类,python,svm,libsvm,classification,Python,Svm,Libsvm,Classification,我刚开始在python中使用libsvm,并得到了一些简单的分类 问题是我正在构建一个人脸检测系统,我想要一个非常低的错误拒绝率。另一方面,svm似乎优化了相同的错误拒绝和错误接受。我有什么选择 正如前面所说,我对libsvm很陌生,所以要友善 支持向量机通常不被认为是一种概率模型,而是一种最大鉴别模型。因此,我很难在我所知道的支持向量机的背景下阐述您的问题 此外,libSVM附带的Python绑定的性能不太好,也没有公开libSVM的所有选项 也就是说,如果您愿意查看其他绑定,那么的svm绑定
正如前面所说,我对libsvm很陌生,所以要友善 支持向量机通常不被认为是一种概率模型,而是一种最大鉴别模型。因此,我很难在我所知道的支持向量机的背景下阐述您的问题 此外,libSVM附带的Python绑定的性能不太好,也没有公开libSVM的所有选项 也就是说,如果您愿意查看其他绑定,那么的svm绑定会更丰富,并公开一些可能有用的参数,例如,或。您可以更加强调您不希望错误分类的类
此外,scikit的绑定公开了一个漏洞,但在支持向量机的情况下,我相信它依赖于黑客(因为支持向量机不是概率性的)对分类进行重采样以获得预测的置信区间的libSVM。我一直在使用libSVM的python包装器,发现我可以使用边距计算置信度量。。。请参阅下面的“预测值”函数。它返回一个实值,大的正值表示它是类成员,大的负值表示它不是类成员;接近于零的值表示它对分类没有信心。因此,不要调用“predict”,而是调用“predict\u values\u 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)
不知道确切的语法,但一般来说,您要做的是改变阈值的值,较低的阈值将减少错误拒绝