Faire un peu d'apprentissage automatique avec scikit-learn est plus facile que de créer une petite application Web avec LAMP. Voici un résumé de ce que j'ai appris au cours des deux mois écoulés depuis mes débuts.
Comme pour toute technologie, vous pouvez procéder en toute confiance en demandant à un ami et en obtenant d'abord un aperçu. Avoir cette confiance rend plus difficile pour vous de briser votre cœur. @Fukkyy m'a dit que «les sites d'introduction utilisent des termes difficiles pour me faire peur, mais si j'utilise une bibliothèque, l'apprentissage automatique n'est pas effrayant», et j'ai ignoré les sites d'introduction dans les rues et j'ai commencé à frapper la bibliothèque, donc c'était facile d'entrer. .. Nous avons reçu divers conseils de @ ysks3n, tels que la suppression de dimension et l'utilisation appropriée de chaque algorithme. Si les bases ne vous dérangent pas, je peux vous enseigner la pratique, alors appelez-moi si vous êtes intéressé.
\ # Merci à vous deux!
La quantité de données qui pouvait être jetée dans la bibliothèque à volonté était bien inférieure à ce à quoi je m'attendais. Il y avait une croyance infondée selon laquelle si les données faisaient environ 30 Go, il serait possible de se passer de tout traitement. Il existe une bibliothèque dans scikit-learn qui effectue une compression dimensionnelle (réduction de la taille horizontale), il est donc bon de l'utiliser. J'ai écrit comment compresser les dimensions dans l'exemple de code ci-dessous. Si vous partez d'un petit nombre de dimensions et que vous l'augmentez, le taux de réponse correct peut augmenter, il est donc préférable de s'arrêter à ce point. Les données verticales doivent également être supprimées si elles ne sont pas liées à l'apprentissage.
Comme je l'ai écrit ci-dessus, il existe des sites d'introduction difficiles dans les rues, mais je pense que les débutants peuvent utiliser l'exemple de code avant d'étudier la théorie. De plus, l'apprentissage automatique utilise divers modèles, le cas échéant, mais si vous étudiez chaque modèle en détail, il est écrit que c'est difficile et qu'il a tendance à gaspiller de la chaleur, donc si vous utilisez scicit-learn, vous pouvez utiliser le modèle. Je pense que vous devriez tous les essayer et utiliser celui avec le taux de précision le plus élevé. Vous pouvez changer de modèle en réécrivant simplement une ligne. J'ai écrit l'exemple de code en bas. Si vous avez besoin de plus de précision et que vous pouvez vous le permettre, étudiez.
Il existe deux principaux types d'apprentissage automatique (avec un enseignant).
C'est une méthode de prédiction de valeurs numériques à partir de données. Par exemple, comme indiqué ci-dessous, il est utilisé pour apprendre la relation avec la température à partir du temps passé, du lieu et de la date, et pour prédire la température la prochaine fois que vous entrez le temps et le lieu.
Température | Météo | endroit | temps |
---|---|---|---|
19 | Bien | Tokyo | 111 |
29 | pluie | Osaka | 311 |
19 | Nuageux | Fukuoka | 121 |
29 | Bien | Kumamoto | 11 |
39 | pluie | Kyoto | 311 |
29 | Nuageux | Aichi | 131 |
19 | Bien | Nara | 211 |
9 | pluie | Ishikawa | 141 |
49 | Nuageux | enfer | 151 |
Température | Météo | endroit | Date |
---|---|---|---|
? | pluie | Tokyo | 111 |
Une méthode pour prédire la classification à partir de données. Par exemple, vous pouvez apprendre la relation entre le livre que vous lisez et la classification des hommes et des femmes, et l'utiliser pour classer le sexe de la personne la prochaine fois que vous entrez les informations du livre que vous lisez.
sexe | La légende la plus forte Kurosawa | Chasseur chasseur | Masque en verre |
---|---|---|---|
Homme | lis | lis | Pas lu |
Homme | Pas lu | lis | Pas lu |
femme | Pas lu | lis | lis |
Homme | Pas lu | lis | Pas lu |
femme | Pas lu | lis | lis |
Homme | lis | lis | Pas lu |
Homme | lis | lis | lis |
femme | Pas lu | lis | lis |
Homme | lis | lis | Pas lu |
sexe | La légende la plus forte Kurosawa | Chasseur chasseur | Masque en verre |
---|---|---|---|
? | lis | lis | lis |
\ # Il y a aussi un clustering de l'apprentissage non supervisé, mais je ne le gère pas, donc je vais l'exclure cette fois
C'est une bibliothèque de rêve où tout le monde peut faire du machine learning.
sk_learn_sample.py
# -*- coding: utf-8 -*-
from sklearn.svm import LinearSVC
from sklearn.ensemble import AdaBoostClassifier,ExtraTreesClassifier ,GradientBoostingClassifier, RandomForestClassifier
from sklearn.decomposition import TruncatedSVD
from sklearn import datasets
from sklearn.cross_validation import cross_val_score
#Préparer les données d'entraînement
iris = datasets.load_iris() #Exemples de données attachées à la bibliothèque
features = iris.data #Données sur les fonctionnalités
#Dans l'exemple de classification ci-dessus, cela correspond à la météo, au lieu, à la date et si vous lisez ou non chaque manga.
labels = iris.target #Corriger les données de réponse pour la quantité d'entités
#Dans l'exemple de classification ci-dessus, cela correspond à la température et au sexe.
#Compresser la cote de quantité d'objets
#Traitez les caractéristiques de nature similaire comme étant identiques
lsa = TruncatedSVD(2)
reduced_features = lsa.fit_transform(features)
#Je ne sais pas quel modèle utiliser, donc j'avais un œil dessus. Pour le moment, tuez tout le monde avec les paramètres par défaut.
clf_names = ["LinearSVC","AdaBoostClassifier","ExtraTreesClassifier" ,"GradientBoostingClassifier","RandomForestClassifier"]
for clf_name in clf_names:
clf = eval("%s()" % clf_name)
scores = cross_val_score(clf,reduced_features, labels,cv=5)
score = sum(scores) / len(scores) #Mesurer le taux de réponse correct du modèle
print "%score de s:%s" % (clf_name,score)
#Score LinearSVC:0.973333333333
#Score du classificateur AdaBoost:0.973333333333
#Score du classificateur ExtraTrees:0.973333333333
#GradientBoostingClassifier score:0.966666666667
#Score de RandomForestClassifier:0.933333333333
Google Prediction API L'introduction coûte moins cher que sk-learn, mais l'inconvénient est que la quantité de données pouvant être gérée est faible.
Mahout Cela semble être un outil capable d'effectuer un apprentissage automatique distribué à l'aide de Hadoop, mais la personne qui a écrit la série de Mahout en japonais a recommandé Spark à Mahout. Ceci est un projet Apache.
Spark Je ne sais pas grand-chose sur la différence avec Mahout, mais une personne formidable a recommandé celui-ci. Le scikit-learn fonctionnait plutôt bien, alors je l'ai juste touché et je me suis arrêté immédiatement. C'est aussi un projet Apache.
Cython C'est explosif, mais parfois le code qui fonctionnait en Python ne fonctionne pas en Cython, ou le processus qui a été traité en parallèle est toujours actif. Si vous rencontrez un problème à un bas niveau, vous pouvez essayer de l'exécuter normalement en Python.
Si vous avez un ami détaillé, demandez à cette personne. Demandez-moi si vous n'avez pas d'amis. Échangeons la technologie. Pour le moment, j'aimerais que vous installiez scicit-learn, collez l'exemple de code ci-dessus et l'exécutiez.
\ # Le produit que j'ai fabriqué cette fois-ci est sous-traité, je ne l'ai donc pas ouvert. Pas mal. C'est une application Web qui a résolu \ # des problèmes comme celui-ci.
Recommended Posts