Outil MALSS (basique) qui prend en charge l'apprentissage automatique en Python

Prend en charge Python3 (2016.01.25) </ font>

J'ai créé un outil appelé MALSS (Machine Learning Support System) pour prendre en charge l'apprentissage automatique en Python (PyPI/[GitHub](https: /) /github.com/canard0328/malss)). La dernière fois a écrit sur la méthode d'introduction, donc cette fois il s'agit de l'utilisation de base.

Importation de package

Tout d'abord, importez MALSS.

python


from malss import MALSS

Préparation des données

Ensuite, préparez les données. Cette fois, nous utiliserons les données sur les maladies cardiaques utilisées dans le livre ici. Puisque la colonne AHD indique s'il y a ou non une maladie cardiaque, le but est de le prédire. Dans ces données, les variables explicatives (valeurs utilisées pour la prédiction) incluent des variables catégorielles (valeurs non numériques). La bibliothèque pandas est utilisée pour le chargement. S'il s'agit uniquement de données numériques, vous pouvez utiliser la méthode loadtxt de numpy.

python


import pandas as pd
data = pd.read_csv('http://www-bcf.usc.edu/~gareth/ISL/Heart.csv',
                   index_col=0, na_values=[''])
y = data['AHD']
del data['AHD']

une analyse

Nous allons enfin l'analyser. Tout ce que vous avez à faire est de créer une instance et d'exécuter la méthode fit. L'analyse prend de quelques minutes à plusieurs dizaines de minutes, selon la quantité de données et les spécifications de la machine.

python


cls = MALSS('classification',
            shuffle=True, standardize=True, n_jobs=3,
            random_state=0, lang='jp', verbose=True)
cls.fit(data, y, 'result_classification')

Le seul argument requis à passer au constructeur MALSS est la tâche d'analyse. ** Cette fois, il s'agit de «classification» car c'est une tâche de classification (identification) qui prédit l'étiquette (Oui / Non). C'est la «régression» dans la tâche de régression qui prédit la valeur. ** **

Les autres options ne doivent pas être saisies car les valeurs initiales sont définies.

  • shuffle * mélange les données lors de l'exécution de l'apprentissage automatique (valeur initiale: True)
  • standardize * normalise les données (chaque colonne a une moyenne de 0 et une distribution de 1) (valeur initiale: True),
  • score * est le nom de l'indice d'évaluation ou de la fonction d'évaluation (valeur initiale: Aucune (classification: valeur F1, régression: MSE)),
  • n_jobs * est le nombre d'exécutions parallèles (valeur initiale: 1),
  • random_state * est la graine lorsque l'apprentissage automatique utilise des nombres aléatoires (valeur initiale: 0),
  • lang * est la langue utilisée dans le rapport d'analyse (valeur initiale: en (anglais)),
  • verbose * indique s'il faut afficher la progression vers la console (valeur initiale: True).

Les arguments de la méthode d'ajustement sont les données d'entrée (quantité de caractéristique / variable explicative), les données de sortie (variable d'objectif) et le répertoire de destination de sortie (par défaut: Aucun). Si le répertoire de destination de sortie est transmis, le rapport de résultat de l'analyse sera généré.

Consultez le rapport

Ouvrez report.html dans le répertoire spécifié par ↑ dans le navigateur. (* Remarque: le contenu de la capture d'écran peut provenir d'une version plus ancienne)

résultat de l'analyse

分析結果.png

Plusieurs algorithmes d'apprentissage automatique sont automatiquement sélectionnés en fonction de la tâche d'analyse et des données (principalement la taille), et le score de validation croisée de chaque algorithme est affiché. En regardant ce tableau, nous pouvons voir que le score pour ces données est le plus élevé lorsque la régression logistique est utilisée. Dans l'analyse utilisant l'apprentissage automatique, une technique appelée ** validation croisée ** est utilisée pour empêcher le modèle de suradapter uniquement à des données données. Ceci est expliqué ci-dessous et des liens vers des pages d'explication (Wikipédia, etc.) sont fournis pour les termes techniques. Une fois que vous vous y êtes habitué, vous pouvez masquer ce commentaire en définissant l'option verbose sur False.

Résumé des données

データ概要.png

Ensuite, le résumé des données s'affiche. MALSS a une fonction de conversion de données catégoriques utilisant des ** variables factices ** et une fonction ** d'interpolation de valeur manquante **, qui sont également expliquées.

Résultats d'analyse par algorithme

Après cela, les résultats de l'analyse pour chaque algorithme sont affichés.

Résultat du réglage des paramètres

SVM.png

Les performances de la plupart des algorithmes d'apprentissage automatique changent en ajustant les paramètres. S'il y a plusieurs paramètres à ajuster, utilisez ** la recherche de grille ** pour régler les paramètres. Comme décrit dans la partie commentaire, si le paramètre optimal (partie rouge) est la valeur à la fin de la largeur de changement de paramètre, il est nécessaire de changer la largeur (la méthode de changement sera décrite la prochaine fois). Dans le cas de cette figure, il est bon de considérer le cas où le paramètre * C * vaut 1.

Pour plus de détails sur les paramètres, accédez au document scikit-learn à partir du lien du nom de l'algorithme et vérifiez-le.

Résultat de la classification

分類結果.png

Dans la tâche de classification / identification, si le ratio des étiquettes est biaisé, il peut ne pas être approprié d'évaluer simplement avec précision (le ratio selon lequel la prédiction était correcte) (par exemple, 1% des données avec AHD est Oui). Dans ce cas, la précision du modèle qui prédit toujours Non est de 99%). Dans de tels cas, ** valeur F ** (valeur F1) est un indice d'évaluation plus approprié.

Courbe d'apprentissage

学習曲線.png

Enfin, la ** courbe d'apprentissage ** s'affiche. La courbe d'apprentissage illustre comment le score d'évaluation change lorsque la taille des données est modifiée. En regardant la courbe d'apprentissage, vous pouvez voir ce que fait le modèle (** variance élevée ** ou ** biais élevé **) et obtenir des conseils sur ce qu'il faut faire pour améliorer les performances. ..

Exemple de sortie du module

Même si elle peut être analysée automatiquement, elle n'a aucun sens à moins qu'elle ne puisse être intégrée au système. MALSS peut générer un exemple de module en utilisant l'algorithme d'apprentissage avec le meilleur score d'évaluation.

python


cls.generate_module_sample('sample_code.py')

L'échantillon de module de sortie peut être formé avec fit et prédit avec prédire, de la même manière que l'algorithme d'apprentissage automatique de scicit-learn.

python


from sample_code import SampleClass
from sklearn.metrics import f1_score

cls = SampleClass()
cls.fit(X_train, y_train)  # X_train, y_train est des données d'entraînement (la même que celle transmise à MALSS est OK)
pred = cls.predict(X_test)  # X_le test est une entrée de données inconnue dans le système réel
print f1_score(y_test, pred)

En fait, je ne pense pas que le modèle soit entraîné à chaque fois, donc je pense qu'il vaut mieux vider le modèle entraîné avec du cornichon.

en conclusion

J'ai expliqué l'utilisation de base de MALSS. Nous vous serions reconnaissants de bien vouloir nous donner votre avis sur des choses difficiles à comprendre.

La prochaine fois écrira sur l'utilisation appliquée telle que l'ajout d'un algorithme par vous-même.

Recommended Posts

Outil MALSS (basique) qui prend en charge l'apprentissage automatique en Python
Outil MALSS (application) qui prend en charge l'apprentissage automatique en Python
MALSS (introduction), un outil qui prend en charge l'apprentissage automatique en Python
Python: prétraitement dans l'apprentissage automatique: présentation
[python] Techniques souvent utilisées dans l'apprentissage automatique
Python: prétraitement en machine learning: acquisition de données
[Python] Enregistrement des résultats d'apprentissage (modèles) dans l'apprentissage automatique
Python: prétraitement dans l'apprentissage automatique: conversion de données
Touchons une partie de l'apprentissage automatique avec Python
Tri de base en Python
Créez un environnement interactif pour l'apprentissage automatique avec Python
Défis d'apprentissage automatique de Coursera en Python: ex2 (retour logistique)
Coursera Machine Learning Challenge en Python: ex1 (régression linéaire)
Résumé du flux de base de l'apprentissage automatique avec Python
Tentative d'inclusion du modèle d'apprentissage automatique dans le package python
Apprentissage automatique dans Delemas (s'entraîner)
Refactoring appris avec Python (Basic)
Apprentissage automatique avec Python! Préparation
Programmation Python Machine Learning> Mots-clés
Utilisé en EDA pour l'apprentissage automatique
Commencer avec l'apprentissage automatique Python
Notez qu'il prend en charge Python 3
Le résultat de l'apprentissage automatique des ingénieurs Java avec Python www
Défis d'apprentissage automatique de Coursera en Python: ex7-2 (analyse principale)
Mettre en œuvre l'apprentissage de l'empilement en Python [Kaggle]
Que diriez-vous d'Anaconda pour créer un environnement d'apprentissage automatique avec Python?
Scraping avec Selenium en Python (Basic)
Défis de Coursera Machine Learning en Python: ex5 (ajustement des paramètres de régularisation)
Automatisez les tâches de routine dans l'apprentissage automatique
Procédure d'apprentissage automatique de base: ④ Apprentissage du classificateur + apprentissage d'ensemble
[Python] Connaissances de base utilisées dans AtCoder
Règles d'apprentissage Widrow-Hoff implémentées en Python
Classification et régression dans l'apprentissage automatique
<Pour les débutants> bibliothèque python <Pour l'apprentissage automatique>
Apprentissage automatique dans Delemas (acquisition de données)
Implémentation des règles d'apprentissage Perceptron en Python
Prétraitement dans l'apprentissage automatique 2 Acquisition de données
Recherche de semences aléatoires dans l'apprentissage automatique
Mémo d'apprentissage "Scraping & Machine Learning avec Python"
Prétraitement dans l'apprentissage automatique 4 Conversion de données
Procédure d'apprentissage automatique de base: ② Préparer les données
Notez que je comprends l'algorithme du classificateur Naive Bayes. Et je l'ai écrit en Python.
Coursera Machine Learning Challenge en Python: ex6 (Comment ajuster les paramètres SVM)
Coursera Machine Learning Challenge en Python: ex7-1 (Compression d'image avec clustering K-means)
Python: prétraitement en machine learning: gestion des données manquantes / aberrantes / déséquilibrées
Mémo d'étude Python & Machine Learning: Préparation de l'environnement
Amplifiez les images pour l'apprentissage automatique avec Python
Utiliser le groupe d'API d'apprentissage automatique A3RT de Python
Apprentissage automatique avec python (2) Analyse de régression simple
J'ai installé Python 3.5.1 pour étudier l'apprentissage automatique
Pourquoi Python est choisi pour l'apprentissage automatique
Note récapitulative sur la programmation d'apprentissage automatique Python (Jupyter)
[Shakyo] Rencontre avec Python pour l'apprentissage automatique
[Python] Première analyse de données / apprentissage automatique (Kaggle)
[Python] Lorsqu'un amateur commence l'apprentissage automatique
[Python] Conception d'applications Web pour l'apprentissage automatique
Créer un environnement pour Python et l'apprentissage automatique (macOS)
Technologie prenant en charge le descripteur Python #pyconjp
Une introduction à Python pour l'apprentissage automatique
Mémo d'étude Python & Machine Learning ③: Réseau neuronal