2017-08-25 2 views
0

Ich verwende scikitlearn für Svm-Klassifizierung.Standardwert in Svm Vorhersage Scikitlearn

Ich brauche einen Klassifikator, der den Standardwert zurückgibt, wenn ein gegebenes Testobjekt keinem der Trainingssatzelemente entspricht, d. H. Wenn der Abstand sehr hoch ist. Ist das möglich?

Für Beispiel

Lassen Sie uns meine sagen Training-Set

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

und Etiketten

y=[0,1,2] 

dann laufe ich Training

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

dann laufe ich Vorhersage

clf.predict([-100,-100,-200]) 

Jetzt, da wir die Test-Artikel sehen [-100,-100,-200] zu weit entfernt, die Vorhersage ergeben wird [2] aus einem der Trainings Artikel, in diesem Fall ist die in diesem Artikel ist [16, 16,64], gibt es Wie auch immer, um etwas anderes zurückgeben zu können (nicht vom Training-Set)?

+0

Zu breit und informell. Aber Sie fragen wahrscheinlich nach Ausreißer-Erkennung/Ein-Klasse-Svm auch in Sklearn zur Verfügung. – sascha

+0

ja eigentlich muss ich nur sagen, ob das Item zu einem der Trainingssätze passt ODER nicht, mir sind die Werte egal, also zum Beispiel möchte ich 1 für Matched und -1 für Nicht Matched bekommen . –

Antwort

0

Ich denke, Sie können ein Label für diese großen Werte erstellen und in Ihrem Trainingssatz hinzugefügt.

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

und versuchen Sie es.

Da SVM überwachtes Lernen ist, was bedeutet, dass die "AUSGABE" angegeben werden muss. Wenn Sie sich nicht sicher sind, was "OUTPUT" ist, machen Sie ein nicht überwachtes Clustering (zum Beispiel kmeans) und haben Sie eine ungefähre Vorstellung davon, wie viele mögliche "OUTPUT" Sie erwarten können.

+0

Das Hinzufügen von Beschriftungen für Anomalien ist nur möglich, wenn Sie die möglichen Extremwerte kennen, z. Ich muss vielleicht [50,50,100] als nicht übereinstimmend klassifizieren, da es zu weit von einem Gegenstand des Trainingssatzes entfernt ist. Ich werde in k-means schauen. Danke für deine Antwort:) –

Verwandte Themen