我正在使用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]
,无论如何要让它返回任何其他东西(不是来自训练集)?
答案 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'。