[PYTHON] J'ai essayé la validation croisée basée sur le résultat de la recherche de grille avec scikit-learn

introduction

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.

environnement

Contenu

Je présenterai la méthode de test croisé basée sur le résultat de la recherche de grille.

la mise en oeuvre

Obtenir l'ensemble de données

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()

Recherche de grille

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) ...

Validation croisée

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)

Code entier

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

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.        ]

Résumé

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.

référence

[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

J'ai essayé la validation croisée basée sur le résultat de la recherche de grille avec scikit-learn
J'ai essayé de jouer avec la calculatrice avec tkinter
Recherche en grille d'hyper paramètres avec Scikit-learn
J'ai essayé de démarrer avec Bitcoin Systre le week-end
[Scikit-learn] J'ai joué avec la courbe ROC
J'ai essayé de jouer avec l'image avec Pillow
[Python] J'ai essayé de visualiser la nuit du chemin de fer de la galaxie avec WordCloud!
J'ai essayé avec les 100 meilleurs packages PyPI> J'ai essayé de représenter graphiquement les packages installés sur Python
J'ai essayé la reconnaissance manuscrite des caractères des runes avec scikit-learn
J'ai essayé de "lisser" l'image avec Python + OpenCV
J'ai essayé de "différencier" l'image avec Python + OpenCV
J'ai essayé de sauvegarder les données avec discorde
J'ai essayé de "binariser" l'image avec Python + OpenCV
Enregistrez les résultats de la recherche sur Twitter au format CSV.
J'ai essayé la détection d'objets avec YOLO v3 (TensorFlow 2.1) sur le GPU de windows!
J'ai essayé d'entraîner la fonction péché avec chainer
J'ai essayé d'implémenter Mine Sweeper sur un terminal avec python
J'ai essayé de toucher un fichier CSV avec Python
J'ai essayé de résoudre Soma Cube avec python
J'ai essayé de comprendre comment utiliser les pandas et la colinéarité multiple en utilisant l'ensemble de données Affaires comme thème.
J'ai essayé python pour la première fois avec heroku
J'ai essayé de résoudre le problème avec Python Vol.1
J'ai essayé d'installer le noyau Linux sur virtualbox + vagrant
J'ai essayé de frapper l'API avec le client python d'echonest
Je ne tweet pas, mais je souhaite utiliser tweepy: affichez simplement les résultats de la recherche sur la console
[Démarrage du shell] J'ai essayé d'afficher le shell sur le téléviseur avec un G-cluster à carte Linux bon marché
J'ai essayé de trouver l'entropie de l'image avec python
J'ai essayé de simuler la propagation de l'infection avec Python
J'ai essayé d'analyser les émotions de tout le roman "Weather Child" ☔️
Créer un nouveau csv avec des pandas basé sur le csv local
J'ai essayé d'utiliser la bibliothèque Python de Ruby avec PyCall
J'ai essayé de trouver la moyenne de plusieurs colonnes avec TensorFlow
Visualisez les résultats des arbres de décision réalisés avec Python scikit-learn
J'ai essayé de notifier les informations de retard de train avec LINE Notify
J'ai essayé d'exécuter PIFuHD sur Windows pour le moment
J'ai essayé de remplacer le disque dur Windows 10 par un SSD plus petit
Analyse des données basée sur les résultats des élections du gouverneur de Tokyo (2020)
J'ai essayé de sauvegarder l'historique des demandes d'API DRF avec django-request
J'ai essayé de changer le script python de 2.7.11 à 3.6.0 sur Windows10
J'ai essayé de lancer le cluster ipython au minimum sur AWS
J'ai essayé fp-growth avec python
J'ai essayé de gratter avec Python
J'ai essayé Learning-to-Rank avec Elasticsearch!
J'ai essayé le clustering avec PyCaret
J'ai essayé la bibliothèque changefinder!
Je ne peux pas effectuer de recherche avec # google-map. ..
J'ai essayé gRPC avec Python
J'ai essayé de gratter avec du python
J'ai essayé MLflow sur Databricks
Quand j'ai essayé de générer des phrases basées sur la «transformation» de Kafka avec LSTM, je ne pouvais devenir personne.
J'ai essayé d'utiliser "Asciichart Py" qui peut dessiner un beau graphique sur la console avec Python.
J'ai essayé d'utiliser des données PDF de soins médicaux en ligne basés sur la propagation d'une nouvelle infection à coronavirus
Jeu de vie avec Python [je l'ai fait] (sur terminal et Tkinter)
J'ai essayé de gratter le classement du calendrier de l'avent Qiita avec Python
[AWS / Tello] J'ai essayé de faire fonctionner le drone avec ma voix Part2
J'ai essayé de décrire le trafic en temps réel avec WebSocket
J'ai essayé de résoudre l'édition du débutant du livre des fourmis avec python
J'ai essayé d'automatiser l'arrosage du pot avec Raspberry Pi