Uso SVM lineare da scikit learn (LinearSVC) per problemi di classificazione binaria. Comprendo che LinearSVC può darmi le etichette previste e i punteggi decisionali, ma ho voluto delle stime di probabilità (fiducia nell'etichetta). Voglio continuare ad usare LinearSVC a causa della velocità (rispetto a sklearn.svm.SVC con kernel lineare) È ragionevole usare una funzione logistica per convertire i punteggi decisionali in probabilità?Conversione della funzione decisionale di LinearSVC in probabilità (Scikit learn python)
import sklearn.svm as suppmach
# Fit model:
svmmodel=suppmach.LinearSVC(penalty='l1',C=1)
predicted_test= svmmodel.predict(x_test)
predicted_test_scores= svmmodel.decision_function(x_test)
voglio verificare se ha senso per ottenere stime di probabilità semplicemente come [1/(1 + exp (-x))] dove x è il punteggio decisione.
In alternativa, ci sono altre opzioni su classificatori che posso usare per farlo in modo efficiente?
Grazie.
Grazie @greeness per la risposta. Tutto ciò che hai detto sopra ha perfettamente senso e l'ho accettato come risposta. Tuttavia la ragione per cui non sto usando nessun altro classificatore è perché la loro velocità è solitamente molto inferiore a quella di sklearn.svm.LinearSVC. Continuerò a cercare ancora un po 'e aggiornerò qui se trovo qualcosa .. – chet
Non è disponibile perché non è incorporato in Liblinear, che implementa 'LinearSVC', e anche perché' LogisticRegression' è già disponibile (anche se lineare Il ridimensionamento SVM + Platt potrebbe avere alcuni vantaggi rispetto a LR puro, non l'ho mai provato). Il ridimensionamento di Platt in "SVC" deriva da LibSVM. –
Grazie per i commenti @larsmans. – greeness