Unterstützt Python3 (25.01.2016) </ font>
Ich habe ein Tool namens MALSS (Machine Learning Support System) zur Unterstützung des maschinellen Lernens in Python (PyPI/[GitHub](https: /) erstellt. /github.com/canard0328/malss)). Letztes Mal hat über die Einführungsmethode geschrieben, diesmal geht es also um die grundlegende Verwendung.
Importieren Sie zunächst MALSS.
python
from malss import MALSS
Bereiten Sie als Nächstes die Daten vor. Dieses Mal werden wir Herzkrankheitsdaten verwenden, die im Buch hier verwendet werden. Da die AHD-Spalte angibt, ob eine Herzerkrankung vorliegt oder nicht, besteht der Zweck darin, dies vorherzusagen. In diesen Daten enthalten die erklärenden Variablen (für die Vorhersage verwendete Werte) kategoriale Variablen (nicht numerische Werte). Die Pandas-Bibliothek wird zum Laden verwendet. Wenn es sich nur um numerische Daten handelt, können Sie die Loadtxt-Methode von numpy verwenden.
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']
Wir werden es endlich analysieren. Sie müssen lediglich eine Instanz erstellen und die Anpassungsmethode ausführen. Abhängig von der Datenmenge und den Maschinenspezifikationen dauert die Analyse einige Minuten bis einige zehn Minuten.
python
cls = MALSS('classification',
shuffle=True, standardize=True, n_jobs=3,
random_state=0, lang='jp', verbose=True)
cls.fit(data, y, 'result_classification')
Das einzige erforderliche Argument, das an den Konstruktor MALSS übergeben werden muss, ist die Analyseaufgabe. ** Diesmal handelt es sich um eine "Klassifizierung", da es sich um eine Klassifizierungsaufgabe (Identifizierungsaufgabe) handelt, die das Etikett vorhersagt (Ja / Nein). Es ist "Regression" in der Regressionsaufgabe, die den Wert vorhersagt. ** ** **
Die anderen Optionen müssen nicht eingegeben werden, da die Anfangswerte festgelegt sind.
Die Argumente der Anpassungsmethode sind Eingabedaten (Merkmalsmenge / erklärende Variable), Ausgabedaten (Zielvariable) und Ausgabezielverzeichnis (Standard: Keine). Wenn das Ausgabezielverzeichnis übergeben wird, wird der Analyseergebnisbericht ausgegeben.
Öffnen Sie die Datei report.html in dem durch ↑ angegebenen Verzeichnis im Browser. (* Hinweis: Der Inhalt des Screenshots stammt möglicherweise aus einer älteren Version.)
Mehrere Algorithmen für maschinelles Lernen werden automatisch entsprechend der Analyseaufgabe und den Daten (hauptsächlich der Größe) ausgewählt, und die Kreuzvalidierungsbewertung jedes Algorithmus wird angezeigt. Wenn wir uns diese Tabelle ansehen, können wir sehen, dass die Punktzahl für diese Daten am höchsten ist, wenn die logistische Regression verwendet wird. Bei der Analyse des maschinellen Lernens wird eine Technik namens "Kreuzverifizierung" verwendet, um zu verhindern, dass sich das Modell nur an bestimmte Daten anpasst. Dies wird unten erläutert, und Links zu Erklärungsseiten (Wikipedia usw.) werden für technische Begriffe bereitgestellt. Sobald Sie sich daran gewöhnt haben, können Sie diesen Kommentar ausblenden, indem Sie die ausführliche Option auf False setzen.
Als nächstes wird die Zusammenfassung der Daten angezeigt. MALSS verfügt über eine kategoriale Datenkonvertierungsfunktion mit ** Dummy-Variablen ** und eine ** Funktion zur Interpolation fehlender Werte **, die ebenfalls erläutert werden.
Danach werden die Analyseergebnisse für jeden Algorithmus angezeigt.
Die Leistung der meisten Algorithmen für maschinelles Lernen ändert sich durch Anpassen der Parameter. Wenn mehrere Parameter angepasst werden müssen, verwenden Sie ** Rastersuche **, um die Parameter zu optimieren. Wie im Kommentarteil beschrieben, muss die Breite geändert werden, wenn der optimale Parameter (roter Teil) der Wert am Ende der Parameteränderungsbreite ist (die Änderungsmethode wird beim nächsten Mal beschrieben). Im Fall dieser Abbildung ist es gut, den Fall zu betrachten, in dem der Parameter * C * 1 ist.
Für Details zu den Parametern springen Sie über den Link des Algorithmusnamens zum Scikit-Lerndokument.
Wenn bei der Klassifizierungs- / Identifizierungsaufgabe das Verhältnis der Etiketten verzerrt ist, ist es möglicherweise nicht angebracht, einfach mit Genauigkeit zu bewerten (das Verhältnis, in dem die Vorhersage korrekt war) (z. B. 1% der Daten mit AHD ist Ja). In diesem Fall beträgt die Genauigkeit des Modells, das immer Nein vorhersagt, 99%. In solchen Fällen ist der ** F-Wert ** (F1-Wert) ein geeigneterer Bewertungsindex.
Schließlich wird die ** Lernkurve ** angezeigt. Die Lernkurve zeigt, wie sich die Bewertungspunktzahl ändert, wenn die Datengröße geändert wird. Wenn Sie sich die Lernkurve ansehen, können Sie sehen, was das Modell tut (** hohe Varianz ** oder ** hohe Verzerrung **) und erhalten Hinweise, wie Sie die Leistung verbessern können. ..
Selbst wenn es automatisch analysiert werden kann, ist es bedeutungslos, es sei denn, es kann in das System integriert werden. MALSS kann ein Beispielmodul unter Verwendung des Lernalgorithmus mit der besten Bewertungspunktzahl ausgeben.
python
cls.generate_module_sample('sample_code.py')
Die Ausgabe des Ausgabemoduls kann mit Anpassung trainiert und mit Vorhersage vorhergesagt werden, ähnlich dem maschinellen Lernalgorithmus von 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_Zug ist Trainingsdaten (genauso wie der an MALSS übergebene ist OK)
pred = cls.predict(X_test) # X_Test ist unbekannte Dateneingabe in das reale System
print f1_score(y_test, pred)
Eigentlich denke ich nicht, dass das Modell jedes Mal trainiert wird, deshalb denke ich, dass es besser ist, das trainierte Modell mit Gurke zu entsorgen.
Ich habe die grundlegende Verwendung von MALSS erklärt. Wir wären Ihnen dankbar, wenn Sie uns Ihre Meinung zu schwer verständlichen Dingen mitteilen könnten.
Nächstes Mal schreibt über die angewandte Verwendung, z. B. das Hinzufügen von Algorithmen selbst.
Recommended Posts