我正在使用机器学习进行新奇检测。我尝试在scikit learn中使用一级svm。
from sklearn import svm
train_data = [[0, 0, 0, 0, 0, 1, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 1], [0, 3, 0, 0, 0, 1, 0, 0], [0, 11, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 4]]
test_data = [[0, 0, 0, 0, 0, 1, 0, 0], [0, 1, 0, 0, 0, 1, 0, 0]]
clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
clf.fit(train_data)
pred_test = clf.predict(test_data)
我是这个领域的新手,我想知道怎样才能说我的测试数据有新意?
答案 0 :(得分:2)
内点标记为1,异常值(即您的情况下的新颖性)标记为-1(作为predict
函数的结果)。
请注意,current documentation错误地指出异常值标记为1& inlier标记为0.请查看github repo上的最新更新以获取正确的信息。
答案 1 :(得分:1)
check = clf.predict(test_data)
如果check = 1则不是异常和
如果check = -1那么它就是异常,即数据是异常值