Mentre libsvm fornisce gli strumenti per i dati di scaling, con scikit-learn (che dovrebbe essere basata su libSVM per il classificatore SVC) non trovo modo per scalare i miei dati.dati di scala in scikit-learn SVM
Fondamentalmente voglio utilizzare 4 caratteristiche, di cui 3 gamma da 0 a 1 e l'ultimo è un "grande" numero molto variabile.
Se includo il quarto lungometraggio in libSVM (utilizzando lo script easy.py che scala automaticamente i miei dati) ottengo alcuni risultati molto bello (96% di precisione). Se includo la quarta variabile in Scikit-Learn la precisione scende a ~ 78% - ma se la escludo, ottengo gli stessi risultati che ottengo in libSVM quando escludo quella caratteristica. Pertanto sono abbastanza sicuro che sia un problema di ridimensionamento mancante.
Come si replica a livello di codice (cioè senza chiamare SVM-scala) il processo di ridimensionamento di SVM?
Buono a sapersi, grazie. Devo standardizzare i dati del test insieme ai dati del treno e tagliarli successivamente o devo solo eseguire i dati di prova da solo? – luke14free
Questo è menzionato nella [documentazione] (http://scikit-learn.org/stable/modules/preprocessing.html#standardization-or-mean-removal-and-variance-scaling). Immagino che dovresti farlo separatamente, altrimenti i dati di allenamento sarebbero influenzati dai campioni di prova. Con la classe 'Scaler' è possibile calcolare la media e la deviazione standard dei dati di allenamento e quindi applicare la stessa trasformazione ai dati di test. – Maehler
Dovresti usare uno 'Scaler' per questo, non la funzione indipendente' scale'. Un 'Scaler' può essere inserito in un' Pipeline', ad es. 'scaling_svm = Pipeline ([(" scaler ", Scaler()), (" svm ", SVC (C = 1000))])'. –