[PYTHON] Présentation et fonctionnalités utiles de scikit-learn qui peuvent également être utilisées pour l'apprentissage en profondeur

scikit-learn: bibliothèque d'apprentissage automatique python. Il n'y a pas de construction du deep learning en lui-même, mais il existe une API pratique pour les métriques d'évaluation et la recherche d'hyperparamètres.

スクリーンショット 2017-04-13 12.09.31.png

Installation

$ pip install scikit-learn

1. Créer un modèle d'apprentissage

  1. Création d'une instance d'un modèle d'apprentissage automatique
  2. Apprentissage (ajustement), détermination des hyper paramètres
  3. Prédire, évaluation

lasso.py


from sklearn.tree import DecisionTreeClassifier
from sklearn.model_selection import GridSearchCV
from sklearn.metrics import accuracy_score

# 0.Lecture des données
from sklearn.datasets import load_iris
iris = load_iris()
X_train, X_test = iris.data[:120], iris.data[120:]
y_train, y_test = iris.target[:120], iris.target[120:]

# 1.Créer une instance d'un modèle d'apprentissage automatique
model = DecisionTreeClassifier(criterion="entropy")

# 2.Apprentissage(fit), Hyper détermination des paramètres
clf = GridSearchCV(model, {'max_depth': [2, 3, 4, 5, 6]}, verbose=1)
clf.fit(X_train, y_train)
print clf.best_params_, clf.best_score_

# 3.Prévoir(predict), Évaluation
pred = clf.predict(X_test)
print accuracy_score(y_true, y_pred)

2. Évaluation des résultats d'apprentissage

Évaluation de la précision, du rappel, du score f1

Utile lorsque le nombre d'étiquettes de classe est biaisé

from sklearn.metrics import classification_report

pred = clf.predict(X_test)
print classification_report(y_test, pred)

#               precision    recall  f1-score   support
# 
#           0       0.94      0.97      0.96        79
#           1       0.90      0.79      0.84        80
#           2       0.99      0.88      0.93        77
#           3       0.89      0.82      0.86        79
#           4       0.94      0.90      0.92        83
#           5       0.92      0.95      0.93        82
#           6       0.95      0.97      0.96        80
#           7       0.96      0.96      0.96        80
#           8       0.82      0.91      0.86        76
#           9       0.79      0.90      0.84        81
# 
# avg / total       0.91      0.91      0.91       797

Sortie de la matrice de confusion

class-label Utile pour évaluer les tâches de type 3 ou supérieur

from sklearn.metrics import confusion_matrix
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

pred = clf.predict(X_test)
conf_mat = confusion_matrix(y_test, pred)
print conf_mat

# [[77  0  0  0  0  0  0  0  2  0]
#  [ 0 63  0  2  3  0  0  0  1 11]
#  [ 1  0 68  6  0  0  0  0  0  2]
#  [ 0  2  0 65  0  1  0  2  9  0]
#  [ 2  0  0  0 75  0  2  0  0  4]
#  [ 0  1  0  0  0 78  2  0  0  1]
#  [ 0  1  1  0  0  0 78  0  0  0]
#  [ 0  0  0  0  1  1  0 77  1  0]
#  [ 0  3  0  0  1  2  0  0 69  1]
#  [ 2  0  0  0  0  3  0  1  2 73]]


# seaborn.Tracer à l'aide de la carte thermique
index = list("0123456789")
columns = list("0123456789")
df = pd.DataFrame(conf_mat, index=index, columns=columns)

fig = plt.figure(figsize = (7,7))
sns.heatmap(df, annot=True, square=True, fmt='.0f', cmap="Blues")
plt.title('hand_written digit classification')
plt.xlabel('ground_truth')
plt.ylabel('prediction')
fig.savefig("conf_mat.png ")

conf_mat.png

Diagramme d'arbre de décision

import pydotplus

dot_data = tree.export_graphviz(clf, out_file=None, 
                         feature_names=iris.feature_names,  
                         class_names=iris.target_names,  
                         filled=True, rounded=True,  
                         special_characters=True)  

graph = pydotplus.graph_from_dot_data(dot_data)  
graph.write_png('iris_tree.png')

hoge.png

3. Autre

Enregistrer et charger le modèle d'entraînement

import pickle
pickle.dump(clf, open("model.pkl", "wb"))
clf = pickle.load(open("model.pkl", "rb"))

#Lors de l'utilisation du joblib de sklearn (y__Voir le commentaire de sama)
from sklearn.externals import joblib
joblib.dump(clf, 'model.pkl')
clf = joblib.load('model.pkl') 

Charger un exemple de jeu de données [sklearn.datasets]

from sklearn import datasets

#Ensemble de données (classification) de 3 types d'iris
# 150samples x 4features
iris = datasets.load_iris()

#Ensemble de données de nombres manuscrits (classification)
# 1794samples x 64features
digits = datasets.load_digits()

#Prix des logements à Boston par région (aller-retour)
# 506samples x 14features
boston = datasets.load_boston()

#Progression de la maladie 1 an après les patients diabétiques (retour)
# 442samples x 10features
diabetes = datasets.load_diabetes()

#Photos de Chine. forme==(427, 640, 3)
im = datasets.load_sample_image('china.jpg')

Recommended Posts

Présentation et fonctionnalités utiles de scikit-learn qui peuvent également être utilisées pour l'apprentissage en profondeur
Fonctions pouvant être utilisées dans l'instruction for
Résumé des sources de données scikit-learn pouvant être utilisées lors de la rédaction d'articles d'analyse
Une collection de ressources qui peuvent être utiles pour créer et développer des fichiers dotfiles
Cours de Deep Learning pouvant être écrasé sur place
Introduction du package de collecte automatique d'images "icrawler" (0.6.3) qui peut être utilisé pendant l'apprentissage automatique
Créez des circuits AND / OR / NAND / XOR avec FPGA qui peuvent être nécessaires pour le Deep Learning avec Polyphony
Comprendre les probabilités et les statistiques qui peuvent être utilisées pour la gestion des progrès avec un programme python
Résumé des pages utiles pour étudier le framework d'apprentissage profond Chainer
J'ai écrit un tri-arbre qui peut être utilisé pour l'implémentation de dictionnaire à grande vitesse en langage D et Python
À propos du fait que l'objet recompilé peut être utilisé pour le modèle re.match
Remplissage facile des données pouvant être utilisées dans le traitement du langage naturel
J'ai créé un modèle de projet Python générique
Optimisation mathématique pour un travail gratuit avec Python + PuLP
[Résumé des livres et cours en ligne utilisés pour l'apprentissage de la programmation et de la science des données]
Signification des modèles et paramètres d'apprentissage en profondeur
Classe pour PYTHON qui peut être utilisée sans connaître LDAP
[Pour les débutants en intelligence artificielle] Parcours d'apprentissage et de référence en apprentissage automatique / programmation en profondeur
Notes personnelles des opérations liées aux pandas qui peuvent être utilisées dans la pratique
Programme d'installation facile et programme de mise à jour automatique pouvant être utilisé dans n'importe quelle langue
Algorithme de règles de domaine pour apprendre les règles interprétables - Peut également être utilisé à partir de lnterpretML de Microsoft Research -
Un mémorandum de méthode souvent utilisé dans l'apprentissage automatique utilisant scikit-learn (pour les débutants)
Types de fichiers pouvant être utilisés avec Go
Un mémorandum d'étude et de mise en œuvre du Deep Learning
Apprentissage parallèle du deep learning par Keras et Kubernetes
Vue d'ensemble des techniques d'apprentissage automatique apprises grâce à scikit-learn
Fichiers PDF et sites utiles pour apprendre Python 3
Implémentation du modèle Deep Learning pour la reconnaissance d'images
Ceci et cela utile lorsqu'il est utilisé avec nohup
Résumé des méthodes d'analyse de données statistiques utilisant Python qui peuvent être utilisées en entreprise
Visualisation des informations géographiques de R et Python qui peuvent être exprimées par Power BI
[Python] Introduction au scraping WEB | Résumé des méthodes pouvant être utilisées avec webdriver
Serveur de partage de fichiers réalisé avec Raspberry Pi pouvant être utilisé pour le travail à distance
Statistiques simples qui peuvent être utilisées pour analyser l'effet des mesures sur les sites EC et les codes qui peuvent être utilisés dans le notebook jupyter
J'ai créé un outil pour générer automatiquement un diagramme de transition d'état pouvant être utilisé à la fois pour le développement Web et le développement d'applications
Algorithmes de base utilisables par les pros de la compétition
J'ai installé et utilisé la bibliothèque Deep Learning Chainer
Quantité d'entités pouvant être extraite des données de séries chronologiques
Notes sur les connaissances Python utilisables avec AtCoder
Enregistrement d'image ANT qui peut être utilisé en 5 minutes
Techniques pour comprendre la base des décisions d'apprentissage en profondeur
Prédire les tags en extrayant des fonctionnalités musicales avec Deep Learning
Bibliothèque DNN (Deep Learning): Comparaison de chainer et TensorFlow (1)
[Django] À propos des utilisateurs pouvant être utilisés sur un modèle
4 boîtes qui pourraient être utiles pour les hackers de Pepper
Collecte et automatisation d'images érotiques à l'aide du deep learning
Introduisez PyQt5 sur MacOS (Linux peut également être utilisé)
Une scène où le GPU est utile pour le deep learning?
Installez Mecab et CaboCha sur ubuntu16.04LTS afin qu'il puisse être utilisé à partir de la série python3
Peut être utilisé avec AtCoder! Une collection de techniques pour dessiner du code court en Python!
[Django] Noms de champs pouvant être utilisés pour le modèle utilisateur, l'enregistrement des utilisateurs et les méthodes de connexion
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Comment définir des variables pouvant être utilisées dans toute l'application Django ~ Utile pour les modèles, etc. ~