Svm预测中的默认值Scikitlearn

时间:2017-08-25 00:48:08

标签: python-3.x machine-learning scikit-learn svm prediction

我正在使用merge( transform(dat, Pc1=substr(Postcode,1,1)), data.frame(State=c("NSW","VIC"),Pc1=c("2","3")) ) # State Pc1 Suburb Postcode #1 NSW 2 FLEMINGTON 2140 #2 NSW 2 FLEMINGTON 2144 #3 VIC 3 FLEMINGTON 3021 #4 VIC 3 FLEMINGTON 3031 进行svm分类。

我需要一个分类器,当给定的测试项目与任何训练集项目不匹配时,即当距离非常高时,返回默认值。这可能吗?

例如

假设我的训练集是

scikitlearn

和标签

   X= [[0.5,0.5,2],[4, 4,16],[16, 16,64]]

然后我开始训练

y=[0,1,2]

然后我运行预测

clf = svm.SVC()
clf.fit(X, y)

现在我们可以看到测试项clf.predict([-100,-100,-200]) 离任何培训项目太远了,在这种情况下,预测会产生[-100,-100,-200]这个项[2] ,无论如何要让它返回任何其他东西(不是来自训练集)?

1 个答案:

答案 0 :(得分:0)

我认为您可以为这些重要值创建标签,并添加到您的训练集中。

X= [[0.5,0.5,2],[4, 4,16],[16, 16,64],[-100,-100,200]]
Y=[0,1,2,100]

并尝试一下。

由于SVM是监督学习,这意味着必须指定'OUTPUT'。如果您不确定'OUTPUT',请做一些非监督聚类(例如kmeans),并大致了解您可能会有多少'OUTPUT'。