La recherche de grille et le test croisé ont été introduits à divers endroits, mais comme il n'y avait aucun endroit qui a introduit la méthode de test croisé basée sur le résultat de la recherche de grille, je vais l'introduire ici.
Je présenterai la méthode de test croisé basée sur le résultat de la recherche de grille.
Tout d'abord, récupérez les données pour l'apprentissage automatique. Puisque scikit-learn est livré avec un jeu de données prédéfini, c'est un excellent endroit pour commencer l'apprentissage automatique pour le moment. Les détails de l'ensemble de données sont résumés dans [ce site](l'ensemble de données joint à http://pythondatascience.plavox.info/scikit-learn/scikit-learn/).
base de données
#Obtenir l'ensemble de données
iris = datasets.load_iris()
Faites ensuite une recherche dans la grille. Définissez les paramètres de recherche de grille et exécutez. L'un des avantages de scikit-learn est que vous pouvez facilement rechercher dans la grille. C'est cool d'appeler un paramètre un hyper paramètre ♪
Recherche de grille
#Définir les paramètres de la recherche de grille
parameters = {
'C':[1, 3, 5],
'loss':('hinge', 'squared_hinge')
}
#Effectuer une recherche de grille
clf = grid_search.GridSearchCV(svm.LinearSVC(), parameters)
clf.fit(iris.data, iris.target)
#Résultats de la recherche dans la grille(Paramètres optimaux)Avoir
GS_loss, GS_C = clf.best_params_.values()
print "Paramètres optimaux:{}".format(clf.best_params_)
Les paramètres optimaux sont attribués respectivement à «GS_loss» et «GS_C». Avant d'obtenir les paramètres optimaux, il est préférable de les afficher une fois et de vérifier l'ordre des paramètres. L'ordre des paramètres ne semble pas être l'ordre des paramètres sur le Site officiel (sklearn.svm.LinearSVC) ...
Le test croisé est effectué sur la base du résultat de la recherche de grille à la fin.
Test croisé
#Test croisé(Validation croisée)Courir
clf = svm.LinearSVC(loss=GS_loss, C=GS_C)
score = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)
#Afficher le résultat du test croisé
print "Taux de réponse correct(moyenne):{}".format(score.mean())
print "Taux de réponse correct(le minimum):{}".format(score.min())
print "Taux de réponse correct(maximum):{}".format(score.max())
print "Taux de réponse correct(écart-type):{}".format(score.std())
print "Taux de réponse correct(tout):{}".format(score)
L'ensemble
# -*- coding: utf-8 -*-
from sklearn import datasets
from sklearn import svm
from sklearn import grid_search
from sklearn import cross_validation
# main
if __name__ == "__main__":
#Obtenir l'ensemble de données
iris = datasets.load_iris()
#Définir les paramètres de la recherche de grille
parameters = {
'C':[1, 3, 5],
'loss':('hinge', 'squared_hinge')
}
#Effectuer une recherche de grille
clf = grid_search.GridSearchCV(svm.LinearSVC(), parameters)
clf.fit(iris.data, iris.target)
#Résultats de la recherche dans la grille(Paramètres optimaux)Avoir
GS_loss, GS_C = clf.best_params_.values()
print "Paramètres optimaux:{}".format(clf.best_params_)
#Test croisé(Validation croisée)Courir
clf = svm.LinearSVC(loss=GS_loss, C=GS_C)
score = cross_validation.cross_val_score(clf, iris.data, iris.target, cv=5)
#Afficher le résultat du test croisé
print "Taux de réponse correct(moyenne):{}".format(score.mean())
print "Taux de réponse correct(le minimum):{}".format(score.min())
print "Taux de réponse correct(maximum):{}".format(score.max())
print "Taux de réponse correct(écart-type):{}".format(score.std())
print "Taux de réponse correct(tout):{}".format(score)
Résultat d'exécution
Paramètres optimaux:{'loss': 'squared_hinge', 'C': 1}
Taux de réponse correct(moyenne):0.966666666667
Taux de réponse correct(le minimum):0.9
Taux de réponse correct(maximum):1.0
Taux de réponse correct(écart-type):0.0421637021356
Taux de réponse correct(tout):[ 1. 1. 0.93333333 0.9 1. ]
C'était un peu décevant que les résultats de la recherche de grille soient les mêmes que les valeurs par défaut de LinearSVC (), mais pour le moment, j'ai pu effectuer des tests croisés en utilisant les résultats de la recherche de grille. J'étais allergique à l'anglais, j'ai donc eu du mal à apprendre en consultant le site officiel.
[Ensemble de données fourni avec scikit-learn](http://pythondatascience.plavox.info/scikit-learn/Dataset fourni avec scikit-learn /)
Site officiel (sklearn.svm.LinearSVC)
Introduction de la bibliothèque d'apprentissage machine python scicit-learn
Recommended Posts