繁体   English   中英

一类 SVM,得到所有 -1

[英]One class SVM, got all -1

我正在做一个二进制分类,只为图像返回“是”或“否”。 因为我只有一个类的图像,所以我想在“目标”和“异常值”之间进行分类。

例如,我正在对消防员进行分类。 在此处输入图片说明

我正在使用 Scikit Learn svm.OneClassSVM() 然而,在训练模型后,我每次都得到“-1”,即使是预测训练数据也是如此。

这是我的代码:

X_train = []
for subdir, dirs, files in os.walk("training"):
    for imagePath in files:
        print ("path = ", imagePath)
        img = Image.open(os.path.join(subdir, imagePath))
        img = img.resize(sample_size, PIL.Image.ANTIALIAS)
        img = np.array(img)
        img = img[:,:,0]
        img = img.reshape(1, img.shape[0]* img.shape[1])
        X_train.append(img[0])

clf = svm.OneClassSVM(nu=0.1, kernel="rbf", gamma=0.1)
clf.fit(X_train)

然后我预测“训练数据”的结果

print clf.predict (X_train)

但是,我仍然得到所有“-1”。 谁能告诉我出了什么问题?

您可以通过计算分数样本来设置阈值级别。 例如

clf = OneClassSVM()        
y_scores = clf.score_samples(test)

您需要自己检查哪个阈值更好。 您可以通过在某些异常类数据上运行模型来检查这一点,并检查低于哪个阈值会得到您的答案。 分数样本越少,离群值越多。

超参数调整最有可能。 伽马可能应该低很多。

您的训练示例“img[0]”的最终形状是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM