Ein wenig maschinelles Lernen mit Scikit-Learn ist einfacher als das Erstellen einer kleinen Web-App mit LAMP. Unten finden Sie eine Zusammenfassung dessen, was ich in den zwei Monaten seit meinem Start gelernt habe.
Wie bei jeder Technologie können Sie sicher vorgehen, indem Sie zuerst einen Freund fragen und sich einen Überblick verschaffen. Dieses Vertrauen macht es Ihnen schwerer, Ihr Herz zu brechen. @Fukkyy sagte mir, dass "Einführungsseiten schwierige Begriffe verwenden, um mich zu erschrecken, aber wenn ich eine Bibliothek benutze, ist maschinelles Lernen nicht beängstigend", und ich ignorierte die Einführungsseiten auf den Straßen und fing an, die Bibliothek zu betreten, so dass es einfach war, sie zu betreten. .. Wir haben von @ ysks3n verschiedene Ratschläge erhalten, z. B. das Löschen von Dimensionen und die ordnungsgemäße Verwendung jedes Algorithmus. Wenn Ihnen die Grundlagen nichts ausmachen, kann ich Ihnen praktische Übungen beibringen. Rufen Sie mich an, wenn Sie interessiert sind (http://qiita.com/puriketu99/items/7370901978887fe59a49).
\ # Danke euch beiden!
Die Datenmenge, die nach Belieben in die Bibliothek geworfen werden konnte, war viel geringer als ich erwartet hatte. Es bestand die unbegründete Annahme, dass bei einer Datenmenge von etwa 30 GB auf eine Verarbeitung verzichtet werden könnte. In scikit-learn gibt es eine Bibliothek, die eine Dimensionskomprimierung (horizontale Größenreduzierung) durchführt. Daher ist es gut, sie zu verwenden. Ich habe im folgenden Beispielcode geschrieben, wie die Abmessungen komprimiert werden. Wenn Sie von einer kleinen Anzahl von Dimensionen ausgehen und diese erhöhen, kann sich die richtige Antwortrate erhöhen. Es ist daher besser, an diesem Punkt anzuhalten. Vertikale Daten sollten auch gelöscht werden, wenn sie nicht mit dem Lernen zusammenhängen.
Wie ich oben geschrieben habe, gibt es einige schwierige Einführungsseiten auf den Straßen, aber ich denke, dass Anfänger den Beispielcode verwenden können, bevor sie die Theorie studieren. Beim maschinellen Lernen werden je nach Bedarf verschiedene Modelle verwendet. Wenn Sie jedoch jedes Modell im Detail untersuchen, wird geschrieben, dass es schwierig ist und dazu neigt, Wärme zu verschwenden. Wenn Sie also Scikit-Learn verwenden, können Sie das Modell verwenden. Ich denke, Sie sollten alle ausprobieren und die mit der höchsten Genauigkeitsrate verwenden. Sie können Modelle wechseln, indem Sie nur eine Zeile neu schreiben. Ich habe den Beispielcode unten geschrieben. Wenn Sie mehr Präzision benötigen und es sich leisten können, studieren Sie.
Es gibt zwei Hauptarten des maschinellen Lernens (mit einem Lehrer).
Es ist eine Methode zur Vorhersage numerischer Werte aus Daten. Sie können es beispielsweise verwenden, um die Beziehung zur Temperatur aus dem vergangenen Wetter, dem Ort und dem Datum zu lernen und dann die Temperatur bei der nächsten Eingabe von Wetter und Ort vorherzusagen, wie unten gezeigt.
Temperatur | Wetter | Ort | Zeit |
---|---|---|---|
19 | Fein | Tokio | 111 |
29 | Regen | Osaka | 311 |
19 | Wolkig | Fukuoka | 121 |
29 | Fein | Kumamoto | 11 |
39 | Regen | Kyoto | 311 |
29 | Wolkig | Aichi | 131 |
19 | Fein | Nara | 211 |
9 | Regen | Ishikawa | 141 |
49 | Wolkig | Hölle | 151 |
Temperatur | Wetter | Ort | Datum |
---|---|---|---|
? | Regen | Tokio | 111 |
Eine Methode zur Vorhersage der Klassifizierung anhand von Daten. Sie können beispielsweise die Beziehung zwischen dem von Ihnen gelesenen Buch und der Klassifizierung von Männern und Frauen lernen und damit das Geschlecht der Person klassifizieren, wenn Sie das nächste Mal die Informationen des von Ihnen gelesenen Buches eingeben.
Sex | Die stärkste Legende Kurosawa | Jäger Jäger | Glasmaske |
---|---|---|---|
Mann | lesen | lesen | Nicht lesen |
Mann | Nicht lesen | lesen | Nicht lesen |
Frau | Nicht lesen | lesen | lesen |
Mann | Nicht lesen | lesen | Nicht lesen |
Frau | Nicht lesen | lesen | lesen |
Mann | lesen | lesen | Nicht lesen |
Mann | lesen | lesen | lesen |
Frau | Nicht lesen | lesen | lesen |
Mann | lesen | lesen | Nicht lesen |
Sex | Die stärkste Legende Kurosawa | Jäger Jäger | Glasmaske |
---|---|---|---|
? | lesen | lesen | lesen |
\ # Es gibt auch Cluster von unbeaufsichtigtem Lernen, aber ich behandle es nicht, deshalb werde ich es dieses Mal ausschließen
Es ist eine traumhafte Bibliothek, in der jeder maschinell lernen kann.
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
#Trainingsdaten vorbereiten
iris = datasets.load_iris() #An die Bibliothek angehängte Beispieldaten
features = iris.data #Funktionsdaten
#Im obigen Klassifizierungsbeispiel entspricht es dem Wetter, dem Ort, dem Datum und ob Sie jeden Manga gelesen haben oder nicht.
labels = iris.target #Richtige Antwortdaten für die Merkmalsmenge
#Im obigen Klassifizierungsbeispiel entspricht es Temperatur und Geschlecht.
#Komprimieren Sie die Bemaßungsmengenabmessung
#Behandeln Sie Merkmale ähnlicher Art als gleich
lsa = TruncatedSVD(2)
reduced_features = lsa.fit_transform(features)
#Ich bin mir nicht sicher, welches Modell ich verwenden soll, also habe ich es im Auge behalten. Töte vorerst alle mit den Standardeinstellungen.
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) #Messen Sie die richtige Antwortrate des Modells
print "%s Punktzahl:%s" % (clf_name,score)
#LinearSVC-Punktzahl:0.973333333333
#AdaBoost Classifier Punktzahl:0.973333333333
#ExtraTrees Classifier Punktzahl:0.973333333333
#GradientBoostingClassifier-Punktzahl:0.966666666667
#RandomForestClassifier-Punktzahl:0.933333333333
Google Prediction API Die Einführung kostet weniger als Sk-Learn, aber der Nachteil ist, dass die Datenmenge, die verarbeitet werden kann, gering ist.
Mahout Es scheint ein Werkzeug zu sein, das verteiltes maschinelles Lernen mit Hadoop durchführen kann, aber die Person, die die Mahout-Serie auf Japanisch geschrieben hat, hat Spark Mahout empfohlen. Dies ist ein Apache-Projekt.
Spark Ich weiß nicht viel über den Unterschied zu Mahout, aber eine großartige Person hat diesen empfohlen. Das Scikit-Lernen hat ziemlich gut funktioniert, also habe ich es einfach berührt und sofort aufgehört. Es ist auch ein Apache-Projekt.
Cython Es ist explosiv, aber manchmal funktioniert der Code, der in Python funktioniert hat, in Cython nicht, oder der Prozess, der parallel verarbeitet wurde, ist noch am Leben. Wenn Sie ein Problem auf niedriger Ebene haben, können Sie versuchen, es normal in Python auszuführen.
Wenn Sie einen detaillierten Freund haben, fragen Sie diese Person. Frag mich, ob du keine Freunde hast. Lassen Sie uns Technologie austauschen. Vorerst möchte ich, dass Sie scicit-learn installieren, den obigen Beispielcode einfügen und ausführen.
\ # Das Produkt, das ich dieses Mal hergestellt habe, ist ausgelagert, daher habe ich es nicht geöffnet. Nicht schlecht. Es war eine Webanwendung, die \ # [Probleme wie dieses] löste (http://qiita.com/puriketu99/items/3c6325673f876bb49370).
Recommended Posts