[英]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.