2017-08-25 126 views
0

我正在使用scikitlearn進行svm分類。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]這是這個項目[16, 16,64],有無論如何,使其返回其他任何東西(不是來自訓練集)?

+0

太寬泛,非正式。但你可能會要求在sklearn中提供異常檢測/一類svm。 – sascha

+0

是的,其實我只需要知道該項目是否可以與其中一個訓練集項目相匹配或者不是,我不關心這些值,因此,例如,我想獲得匹配的1和匹配的-1 。 –

回答

0

我認爲你可以爲這些大值創建一個標籤,並添加到你的訓練集中。

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

並試一試。

由於支持向量機監督學習,這意味着'輸出'必須指定。如果你對'OUTPUT'沒有把握,那麼做一些非監督聚類(例如kmeans),並且大致瞭解你會期待多少種可能的'OUTPUT'。

+0

只有當您知道可能的極端值時纔可以添加異常標籤,例如我可能需要將[50,50,100]分類爲不匹配,因爲它與訓練集中的任何項目相距太遠。我會研究K-means。感謝您的回答:) –