[PYTHON] Comment dessiner de manière interactive un pipeline d'apprentissage automatique avec scikit-learn et l'enregistrer au format HTML

Dans cet article, j'expliquerai l'implémentation de la confirmation de pipeline interactive installée à partir de la v0.23 de scikit-learn, et comment la sauvegarder et l'utiliser au format HTML.

environnement

Le code d'implémentation de cet article est ici https://github.com/YutaroOgawa/Qiita/tree/master/sklearn

la mise en oeuvre

[1] Mise à jour de la version

Tout d'abord, la version de scikit-learn de Google Colaboratory est la v0.22 en septembre 2020, alors mettez-la à jour vers la v0.23.

!pip install scikit-learn==0.23.2

Après la mise à jour avec pip, exécutez "Runtime" -> "Restart runtime" de Google Colaboratory, Redémarrez le runtime. (Ceci est la nouvelle v0.23 que scikit-learn a mis avec pip)

[2] Construction du pipeline

Par exemple, le modèle de prétraitement et d'apprentissage automatique a été combiné comme suit: Créez un ** pipeline d'apprentissage automatique **.

[Effectuer l'importation nécessaire]

python from sklearn.pipeline import make_pipeline from sklearn.preprocessing import OneHotEncoder, StandardScaler from sklearn.impute import SimpleImputer from sklearn.compose import make_column_transformer from sklearn.linear_model import LogisticRegression


[Construire un pipeline]

```python```
#Prétraitement des données numériques (normalisation en complétant les valeurs manquantes par la valeur médiane)
num_proc = make_pipeline(SimpleImputer(strategy='median'), StandardScaler())

#Prétraitement des données de catégorie (pour les valeurs manquantes"misssing"Achèvement de la substitution, un encodage à chaud)
cat_proc = make_pipeline(
    SimpleImputer(strategy='constant', fill_value='missing'),
    OneHotEncoder(handle_unknown='ignore'))

#Créer une classe de prétraitement
preprocessor = make_column_transformer((num_proc, ('feat1', 'feat3')),
                                       (cat_proc, ('feat0', 'feat2')))

#Combinez les modèles de prétraitement et d'apprentissage automatique en un seul pipeline
clf = make_pipeline(preprocessor, LogisticRegression())

[3] Visualisation interactive du pipeline

Pour visualiser de manière interactive le pipeline, c'est simple,

sklearn.set_config(display="diagram")

Il suffit d'ajouter.

[Visualisation interactive]

python

Paramètres pour afficher le pipeline

from sklearn import set_config

set_config(display="diagram")

dessin

clf


Ensuite, le pipeline sera dessiné dans la colonne de résultats de JupyterNotebook (Google Colabortory) comme indiqué ci-dessous.
![pipe_sklearn3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191401/b43a1142-4172-94c6-42e7-fa93445ee81c.png)


Cliquez sur chaque élément de ce diagramme de pipeline
L'image change de manière interactive, affichant les paramètres détaillés de cet élément.
(La figure ci-dessous montre la confirmation détaillée de la méthode de traitement des valeurs manquantes pour le prétraitement des colonnes: pipeline.-Cliquez sur 2 Impacteur simple)

![pipe_sklearn.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/191401/0ab138e6-8ade-33af-ca56-68291d827465.png)


##Comment enregistrer le pipeline au format HTML

Comme vous l'avez mentionné dans les commentaires, vous pouvez enregistrer ce pipeline interactif au format HTML.

"C'est un peu si ça ne marche que sur Jupyter Notebook ..."

J'ai pensé, donc c'est une très belle information.

@Merci à DataSkywalker.

Enfin, comme implémentation,

```python
from sklearn.utils import estimator_html_repr

with open('my_estimator.html', 'w') as f:  
    f.write(estimator_html_repr(clf))

Éxécuter. Alors mon_estimator.Le code HTML du pipeline interactif est enregistré au format html.

Avec Google Colaboratory

# Télécharger depuis Google Colaboratory
from google.colab import files
files.download('my_estimator.html')

En exécutant mon_estimator.Vous pouvez télécharger html (Le contenu était d'environ 300 lignes, y compris le style CSS dans le fichier HTML).

En tant que matériau pour expliquer le pipeline de manière interactive Il semble que vous puissiez coller du HTML dans des documents, etc.

Vous pouvez le mettre dans le fichier md sous forme de lien, ou vous pouvez le convertir de force en html, puis le combiner. (Il est difficile de lire le html tel qu'il est dans le fichier md ...?)

document_example.gif

Tous les fichiers ici sont également placés ici https://github.com/YutaroOgawa/Qiita/tree/master/sklearn

##Résumé

scikit-Apprendre la version v0.23 ou plus sklearn.set_config(display="diagram")Il suffit d'ajouter Vous pouvez visualiser de manière interactive (et enregistrer au format HTML) votre pipeline.

Veuillez l'essayer ♪


###Remarques

**【Écrivain】**Service d'information international de Dentsu (ISID)Centre de transformation de l'IADéveloppement Gr Yutaro Ogawa (livre principal)"Apprenez en créant!Développement Deep Learning par PyTorch ",Autre"Détailsdel'auto-introduction"

【Twitter】 En me concentrant sur l'IT / IA et le business / management, j'envoie des articles que je trouve intéressants et des impressions de nouveaux livres que j'ai récemment lus. Si vous souhaitez collecter des informations sur ces champs, veuillez nous suivre ♪ (Il y a beaucoup d'informations à l'étranger)

Yutaro Ogawa@ISID_AI_team

[Autre] L '«équipe de développement AI Transformation Center» que je dirige recherche des membres. Si tu es intéressé,Cette pageNous attendons de recevoir votre demande.

[Sokumen-kun] Si vous souhaitez postuler soudainement, nous aurons un entretien informel avec "Sokumen-kun". Veuillez également l'utiliser ♪ https://sokumenkun.com/2020/08/17/yutaro-ogawa/

[Disclaimer] Le contenu de cet article est l'opinion de l'auteur./Il s'agit d'une transmission et non d'une vision officielle de l'entreprise à laquelle appartient l'auteur.


(référence) https://scikit-learn.org/stable/auto_examples/release_highlights/plot_release_highlights_0_23_0.html https://towardsdatascience.com/9-things-you-should-know-about-scikit-learn-0-23-9426d8e1772c

Recommended Posts

Comment dessiner de manière interactive un pipeline d'apprentissage automatique avec scikit-learn et l'enregistrer au format HTML
Comment créer un environnement virtuel Anaconda à utiliser avec Azure Machine Learning et comment créer un lien avec Jupyter
Comment créer une API de machine learning sans serveur avec AWS Lambda
scikit-learn Comment utiliser le résumé (apprentissage automatique)
Comment rendre le nom du conteneur accessible dans Docker en tant que sous-domaine
Comment dessiner un graphique à 2 axes avec pyplot
[Python] Comment dessiner un histogramme avec Matplotlib
Comment lire les fichiers de numéros de série en boucle, les traiter et les représenter graphiquement
Comment générer un code QR et un code à barres en Python et le lire normalement ou en temps réel avec OpenCV
Comment enregistrer les informations de point caractéristique de l'image dans un fichier et l'utiliser pour la mise en correspondance
Comment convertir / restaurer une chaîne avec [] en python
[Python] Comment dessiner un graphique linéaire avec Matplotlib
Exécutez un pipeline de machine learning avec Cloud Dataflow (Python)
Apprentissage automatique facile avec scikit-learn et flask ✕ Application Web
Comment utiliser Decorator dans Django et comment le créer
L'apprentissage automatique pratique avec Scikit-Learn et TensorFlow-TensorFlow a abandonné -
[Python] Comment dessiner un diagramme de dispersion avec Matplotlib
[TF] Comment enregistrer et charger les paramètres d'entraînement Tensorflow
Comment préparer l'environnement pour Google Colab avec le cours avancé d'apprentissage automatique de Coursera
Comment diviser les données de formation en machine learning en variables objectives et autres dans Pandas
Comment créer rapidement un environnement d'apprentissage automatique à l'aide de Jupyter Notebook avec UbuntuServer 16.04 LTS
Jusqu'à ce que vous créiez un environnement d'apprentissage automatique avec Python sur Windows 7 et que vous l'exécutiez
Comment adapter plusieurs bibliothèques d'apprentissage automatique en une seule fois
[TensorFlow 2 / Keras] Comment exécuter l'apprentissage avec CTC Loss dans Keras
Comment créer rapidement un environnement d'apprentissage automatique à l'aide de Jupyter Notebook avec UbuntuServer 16.04 LTS avec Anaconda
Comment sortir un document au format pdf avec Sphinx
[Google Colab] Comment interrompre l'apprentissage, puis le reprendre
Obtenez de manière récursive la liste Excel dans un dossier spécifique avec python et écrivez-la dans Excel.
Renvoyez les données d'image avec Flask of Python et dessinez-les dans l'élément canvas de HTML
Apprentissage automatique pour apprendre avec Nogisaka 46 et Keyakizaka 46 Partie 1 Introduction
[TF] Comment charger / enregistrer le modèle et le paramètre dans Keras
Comment créer une trame de données et jouer avec des éléments avec des pandas
[Python] Qu'est-ce qu'un tuple? Explique comment utiliser sans toucher et comment l'utiliser avec des exemples.
Comment se connecter à AtCoder avec Python et soumettre automatiquement
[Python] Comment récupérer un fichier html local et le générer au format CSV à l'aide de Beautiful Soup
Étapes rapides pour créer un environnement d'apprentissage automatique à l'aide de Jupyter Notebook sur macOS Sierra avec anaconda
Comment définir un raccourci pour basculer entre pleine largeur et demi-largeur dans IBus
Comment installer OpenCV sur Cloud9 et l'exécuter en Python
Comment comparer des listes et récupérer des éléments communs dans une liste
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
Je veux créer un fichier pip et le refléter dans le menu fixe
[Note de lecture] Apprentissage automatique pratique avec Scikit-Learn, Keras et TensorFlow Chapitre 1
Les gens mémorisent les connaissances acquises dans le cerveau, comment mémoriser les connaissances acquises dans l'apprentissage automatique
Préparez un format de projet d'apprentissage automatique et exécutez-le dans SageMaker
Classification et régression dans l'apprentissage automatique
SVM essayant l'apprentissage automatique avec scikit-learn
Comment collecter des données d'apprentissage automatique
Comment créer un ensemble de données d'image de visage utilisé dans l'apprentissage automatique (3: Génération d'images de visage à partir d'images candidates, partie 1)
Les débutants veulent créer quelque chose comme un cube rubic avec UE4 et en faire une bibliothèque pour un apprentissage amélioré # 4
(Apprentissage automatique) J'ai essayé de comprendre attentivement l'algorithme EM dans la distribution gaussienne mixte avec l'implémentation.
J'ai écrit un livre qui vous permet d'apprendre les implémentations et les algorithmes d'apprentissage automatique de manière équilibrée.
Comment saisir une chaîne de caractères en Python et la sortir telle quelle ou dans la direction opposée.
Les débutants veulent créer quelque chose comme un cube rubic avec UE4 et en faire une bibliothèque pour un apprentissage amélioré # 5
Les débutants veulent créer quelque chose comme un cube rubic avec UE4 et en faire une bibliothèque pour un apprentissage amélioré # 6
Coursera Machine Learning Challenge en Python: ex6 (Comment ajuster les paramètres SVM)