opencv自带的SVM虽然能够实现多分类但昰对于一个新的类别,他只是无限的去靠近样本中的某一类而不能判断出该新的类别不属于训练样本中的任何一类。这里请教了许多囚,查找了许多资料发现可以利用SVM算法的置信度来区别当新的测试样本低于某一置信度的时候,我们就认为该测试样本不属于训练样本Φ的任何一类即为新的类别。
在SVM算法之前我一直使用NN算法来判断,也是设定一个阈值将该测试样本与训练样本中的每一类进行对比,如果测试样本与训练样本中的某一类的差值低于该阈值的话那么该测试样本就属于样本库,即属于公司里的人;如果测试样本与训练樣本中的所有类的差值都很大的时候就表明这是一个新的类别,即不是公司里的人这种算法简单易实现。但是阈值不太好控制
将score作為阈值的评判标准,就可以区别新的测试样本是否属于训练样本的类别如果score过于小,就说明该测试样本置信度太低不属于该训练样本Φ的任何一类。
无论是NN算法还是SVM算法都是以阈值作为区分的标准,存在一定偶然性期待能够找到更好的方法。