我正在尝试使用scikit-learn训练一个支持向量机。对于trainingdata1
,它能正确输出结果。但是对于trainingdata2
,它总是不能给出预期的结果(trainingdata2
是我真正需要的)。哪里出了问题?
from sklearn import svmtrainingdata1 = [[11.0, 2, 2, 1.235, 5.687457], [11.3, 2, 2,7.563, 10.107477]]#trainingdata2 = [[1.70503083,7.531671404747827,1.4804916998015452,3.0767991352604387,6.5742], [11.3, 2, 2,7.563, 10.107477]]clf = svm.OneClassSVM()clf.fit(trainingdata1)def alert(data): if clf.predict(data) < 0: print ('\n\nThere is something wrong') else: print('\nCorrect')alert([11.3, 2, 2,7.563, 10.107477])#alert([1.70503083,7.531671404747827,1.4804916998015452,3.0767991352604387,6.5742])
回答:
我得承认,我之前并没有听说过单类支持向量机。据我所知,它们的目标是判断测试样本是否与之前提供的样本相似。现在,这两个案例的区别在于,第一个工作示例中的两个向量非常相似,而另一个示例中的向量则有所不同(如果我们比较不同组件的数值)。这是否意味着它实际上是按预期运行的?请注意,SVM训练并不一定意味着所有训练样本都被标记为训练用,因为存在泛化问题。