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.
Tout d'abord, importez MALSS.
python
from malss import MALSS
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']
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.
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é.
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)
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.
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.
Après cela, les résultats de l'analyse pour chaque algorithme sont affichés.
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.
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é.
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. ..
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.
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