2017-04-04 2 views
0

J'utilise SVM de scikit-learn comme ceci:Prédire les données de formation dans sklearn

clf = svm.SVC() 
clf.fit(td_X, td_y) 

Ma question est quand j'utilise le classificateur pour prédire la classe d'un membre de l'ensemble de la formation, pourrait le classificateur jamais mal même dans l'implémentation de scikit-learns. (. Par exemple clf.predict(td_X[a])==td_Y[a])

Répondre

2

Oui certainement, exécutez ce code par exemple:

from sklearn import svm 
import numpy as np 
clf = svm.SVC() 
np.random.seed(seed=42) 
x=np.random.normal(loc=0.0, scale=1.0, size=[100,2]) 
y=np.random.randint(2,size=100) 
clf.fit(x,y) 
print(clf.score(x,y)) 

Le score est de 0,61, donc près de 40% des données de formation est missclassified. Une partie de la raison est que même si le noyau par défaut est 'rbf' (qui devrait en théorie pouvoir classer parfaitement n'importe quel ensemble de données d'entraînement, tant que vous n'avez pas deux points d'entraînement identiques avec des étiquettes différentes), il y a aussi réduire le surapprentissage. Le régularisateur par défaut est C=1.0.

Si vous exécutez le même code que ci-dessus mais que vous passez du clf = svm.SVC() au clf = svm.SVC(C=200000), vous obtenez une précision de 0,94.