2014-10-08 6 views
6

Sto usando LinearSVC dalla libreria di scikit-learn e mi chiedo se sia possibile estrarre in qualche modo i vettori che il mio modello utilizza dopo l'allenamento per fare previsioni. Ho provato a google per qualche tempo, ma senza fortuna. Qualcuno lo sa?scikit-learn, linearsvc - come ottenere i vettori di supporto dall'SMM addestrato?

+0

Intendo i vettori di supporto, 'LinearSVC' in realtà non li usa affatto. –

+0

'LinearSVC' non usa il vettore di supporto, ma il concetto esiste ancora e potrebbe essere ancora utile. –

risposta

4

Purtroppo sembra che non ci sia modo di farlo. LinearSVC chiama liblinear (see relevant code) ma non recupera i vettori, solo i coefficienti e l'intercetta.

Un'alternativa sarebbe quella di utilizzare SVC con il kernel 'lineare' (libsvm invece di liblinear based), ma anche poly, dbf e sigmoid kernel supportare questa opzione:

from sklearn import svm 

X = [[0, 0], [1, 1]] 
y = [0, 1] 

clf = svm.SVC(kernel='linear') 
clf.fit(X, y) 
print clf.support_vectors_ 

uscita:

[[ 0. 0.] 
[ 1. 1.]] 

scale liblinear meglio per un numero elevato di campioni, ma per il resto sono per lo più equivalenti.

+0

Grazie, Elyase. Se userò altri tipi di SVC disponibili in scikit-learn, sarà possibile restituire i vettori (o come chiamarli correttamente se uso il kernel polynomal) in qualche modo? –

+0

@MaximHaytovich, Sì, ho aggiornato la mia risposta. – elyase

2

non sono sicuro se aiuta, ma ero alla ricerca di qualcosa di simile e la conclusione è stata che se:

clf = svm.LinearSVC() 

Allora questo:

clf.decision_function(x) 

è uguale a questo:

clf.cof_.dot(x) + clf.intercept_ 
Problemi correlati