Bisher haben wir Artikel zum Thema "Wie nutzt man maschinelles Lernen für die Arbeit?" In diesem dritten Teil werden wir eine spezifische Programmierung unter dem Thema "Python-Codierungsverfahren" vorstellen.
Wenn Sie die Rückennummer lesen, können Sie das Ganze von den Grundlagen des maschinellen Lernens bis zur Codierung von Python verstehen. Verwenden Sie es daher bitte.
Auf SNS werden auch verschiedene Informationen veröffentlicht. Wenn Sie also der Meinung sind, dass es in Ordnung ist, den Artikel zu lesen Ich wäre Ihnen dankbar, wenn Sie Twitter-Konto "Saku731" folgen könnten.
Erstens sind die Fähigkeiten, die erforderlich sind, um maschinelles Lernen zu beherrschen, wie folgt. Lassen Sie uns diese einzeln codieren.
―― 1) Datenvisualisierung: Erfassen Sie das Gesamtgefühl der Daten und legen Sie die Vorverarbeitungsrichtlinie fest -2) Datenvorverarbeitung: Bereinigen Sie die Daten so, dass die Vorhersagegenauigkeit hoch ist. ―― 3) Auswahl des Algorithmus: Bestimmen Sie den geeigneten Algorithmus für die Daten -4) Modelllernen: Lassen Sie den Computer die Datenregeln lernen -5) Modellüberprüfung: Bestätigen Sie die Vorhersagegenauigkeit des fertigen Modells
** Jupyter Notebook ** ist erforderlich, um mit der Programmierung in Python fortzufahren.
Wenn Sie keine Programmierumgebung auf Ihrem PC haben, bereiten Sie sich bitte auf Folgendes vor. Es ist ein sehr höfliches Material, so dass auch Anfänger sicher sein können.
In letzter Zeit werden "Titanic" -Daten häufig in Webdiensten wie Kaggle verwendet. Mit anderen Worten, selbst wenn Sie Probleme beim Lernen haben, gibt es viele Referenzartikel, sodass in diesem Artikel auch Titanic-Daten verwendet werden.
Bitte laden Sie die Daten von [hier] herunter (https://drive.google.com/drive/folders/1pZb23ZVB6PGXmawt7BXOzTtmVhVpn7IO?usp=sharing). Lassen Sie uns nun eine Reihe von Schritten des maschinellen Lernens codieren.
Der Zweck der Datenvisualisierung besteht darin, "einen Eindruck von den gesamten Daten zu bekommen und die Vorverarbeitungsrichtlinie festzulegen".
Überprüfen Sie zunächst, um welche Art von Daten es sich handelt.
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
%matplotlib inline
#CSV-Daten lesen
df_train = pd.read_csv('train.csv')
#Bestätigung der gelesenen CSV-Daten
df_train.head()
Wenn es gut geht, wird es wie in der folgenden Abbildung gezeigt angezeigt. Beachten Sie, dass dieses Datenformat als ** DataFrame-Format ** bezeichnet wird.
Die Erklärung jeder Zeile lautet wie folgt. Da es diesmal ein Problem ist, das "Überlebensergebnis" vorherzusagen, ist "Überlebt" das Ziel der Vorhersage.
--PassengerID: Passagier-ID
Überprüfen Sie als Nächstes den Durchschnittswert der Daten und die Standardabweichung, die auf Abweichungen hinweist.
df_train.describe()
Die hier zu überprüfenden Punkte sind wie folgt. Die Verwendung des Durchschnittswerts und der Standardabweichung ist eine Fähigkeit, die Sie lernen werden, nachdem Sie sich daran gewöhnt haben. Deshalb werde ich sie in einem anderen Artikel vorstellen.
--mean: Durchschnittswert der Daten --std: Standardabweichung der Daten (Variationsgrad der Zahlenwerte) --min: Mindestwert der Daten
Der nächste auszuführende Prozess ist der ** fehlende Wert ** -Prozess. Ein fehlender Wert ist ein Zustand, in dem Daten aus irgendeinem Grund fehlen. Wenn nichts unternommen wird, tritt im Verlauf des Programms ein Fehler auf, sodass Sie sich frühzeitig damit befassen müssen.
Wenn Sie mehr wissen möchten, lesen Sie bitte [hier], um das detaillierte Programmierverfahren zu verstehen. Führen Sie den folgenden Code aus, um festzustellen, ob Ihre Daten fehlende Werte enthalten.
df_train.isnull().sum()
Diesmal scheinen die Spalten "Alter" und "Kabine" fehlende Werte zu enthalten. Im Allgemeinen gibt es zwei Arten von Gegenmaßnahmen für fehlende Werte: "Entfernung" und "Ergänzung".
--Entfernen: Wenn ein fehlender Wert enthalten ist, löschen Sie die gesamte Zeile und gehen Sie davon aus, dass die Daten selbst fehlten.
Es ist einfacher zu entfernen, daher verwenden wir dieses Mal dropna ()
, um es zu entfernen.
df_train = df_train.dropna()
Überprüfen wir, ob die fehlenden Werte erfolgreich entfernt wurden.
df_train.isnull().sum()
Auf diese Weise haben wir bestätigt, dass in allen Zeilen keine Werte fehlen, sodass wir mit dem nächsten Prozess fortfahren können.
Zeichnen Sie nach Abschluss dieses Schritts verschiedene Diagramme, um die Trends der Daten zu erfassen.
Es gibt kein festes Muster, das definitiv funktionieren wird, aber "1) Daten, die in Vollständige Offenlegung der beim maschinellen Lernen verwendeten Methoden eingeführt wurden) Sie können sich ein Gesamtbild der erforderlichen Fähigkeiten machen, indem Sie auf "Visualisierung" klicken.
Wenn Sie beispielsweise das am häufigsten verwendete Histogramm für die grafische Darstellung verwenden, können Sie die folgende grafische Darstellung zeichnen.
■ Vorbereitung: Bibliothek importieren
import matplotlib.pyplot as plt
%matplotlib inline
■ Grafik 1: Überprüfen Sie die Anzahl der Überlebenden und den Tod von Passagieren
Zunächst werden wir die Anzahl der Überlebenden und die Anzahl der Todesfälle anhand der Daten vergleichen. Als ich den Code ausführte und das Histogramm überprüfte, stellte ich fest, dass es ** "60 Überleben: 120 Todesfälle" ** war.
plt.hist(df_train['Survived'], bins=3)
■ Grafik 2: Zeichnen Sie die Altersverteilung Wenn Sie die Altersverteilung zeichnen, können Sie sehen, dass die Anzahl der Passagiere im Alter von 35 bis 40 Jahren am höchsten war. Wenn man bedenkt, dass es viele Passagiere im Alter von 0 bis 5 Jahren gibt, kann man daraus schließen, dass "** ein Elternteil mit einem Kleinkind an Bord war **".
plt.hist(df_train['Age'], bins=15)
■ Grafik 3: Geschlechterverteilung Wenn Sie die Verteilung des Geschlechts zeichnen, können Sie sehen, dass fast die gleiche Anzahl von Männern und Frauen an Bord war.
plt.hist(df_train['Sex'], bins=3)
■ Grafik 4: Zeichnen Sie die Verteilung von Geschlecht x Überlebensrate Dies wird ein wenig angewendet, aber bei der grafischen Darstellung werden Daten häufig aggregiert.
Das allgemeine Gefühl, welche Art von Methode verfügbar ist, wird in "1) Datenvisualisierung" in Vollständige Offenlegung der beim maschinellen Lernen verwendeten Methoden vorgestellt. Dieses Mal werde ich jedoch eine Methode namens ** Kreuztabelle ** verwenden.
#Kreuztabelle
df_survived = pd.crosstab(df_train['Sex'], df_train['Survived'])
df_survived
Wenn Sie die Ergebnisse der Kreuztabelle überprüfen, können Sie feststellen, dass die Anzahl der Überlebenden bei Frauen deutlich höher ist.
Es ist ein wenig verwirrend, also teilen wir es durch die Gesamtzahl und tabellieren es durch ** Überlebensrate **.
#Kreuztabelle
df_survived = pd.crosstab(df_train['Sex'], df_train['Survived'], normalize='index')
df_survived
Wenn Sie dies grafisch darstellen, können Sie deutlich sehen, dass es einen Unterschied in der Überlebensrate zwischen Männern und Frauen gibt. ** Die Überlebensrate von Frauen ist überwältigend hoch **, daher scheint es, dass Frauen bei der Rettung Vorrang eingeräumt wurde.
#Erhielt das männlich-weibliche Verhältnis von Überlebensrate und Sterblichkeitsrate
#Verhältnis von Männern zu Frauen der Überlebenden
df_survived_1 = df_survived[1].values
#Verhältnis von Männern zu Frauen bei Todesfällen
df_survived_0 = df_survived[0].values.tolist()
#Mann-Frau-Verhältnis der Überlebensrate
plt.bar(x=np.array(['female','male']), height=df_survived_1)
#Sterblichkeitsverhältnis zwischen Männern und Frauen
plt.bar(x=np.array(['female','male']), height=df_survived_0)
Indem wir auf diese Weise verschiedene Diagramme zeichnen, erfassen wir die Eigenschaften der Daten. Es gibt verschiedene andere Methoden. Wenn Sie also interessiert sind, sollten Sie unter [hier] studieren.
Nach Bestätigung der Daten wird eine Vorverarbeitung durchgeführt, damit die Daten beim maschinellen Lernen verwendet werden können (Daten mit guter Vorhersagegenauigkeit).
Ursprünglich werden verschiedene Datenverarbeitungen unter Bezugnahme auf die durch Visualisierung erhaltenen Informationen durchgeführt. Da dies jedoch für die erste Studie zu schwierig ist, werden wir uns mit der einfachsten und wichtigsten "Codierung" befassen.
Als nächstes ist die Verarbeitung für eine Variable namens ** kategoriale Variable ** erforderlich. Eine einfache Erklärung für kategoriale Variablen ist "** Zeichendaten **".
Bitte versuchen Sie, die ursprünglich angezeigten Daten erneut anzuzeigen. Dann sind ** Zeichendaten ** wie "** männlich " und " weiblich **" enthalten.
df_train.head()
Die beim maschinellen Lernen verwendeten Daten unterliegen der Einschränkung "** Numerische Daten verwenden **". Daher ist es notwendig, Zeichendaten auf irgendeine Weise in numerische Daten umzuwandeln.
Die beliebteste Methode ist ** One-Hot-Codierung ** mit get_dummies ()
.
# One-Hot-Codierung
df_train = pd.get_dummies(df_train)
#Überprüfen Sie die konvertierten Daten
df_train.head()
Wie in der folgenden Abbildung gezeigt, wurden die Zeichendaten durch "0" und "1" ersetzt, sodass sie beim maschinellen Lernen verwendet werden können. Wenn Sie den detaillierten Hintergrund verstehen möchten, lesen Sie bitte den Artikel [hier].
Um Regeln durch maschinelles Lernen aus Daten zu extrahieren, sind ** für die Daten geeignete Analysemethoden ** erforderlich. Die Analysemethode wird als Algorithmus bezeichnet.
Es gibt verschiedene Arten von Algorithmen, und die typischen sind wie folgt. Wenn Sie mehr über jeden Algorithmus erfahren möchten, lesen Sie bitte [hier].
--Rückgabe (numerische Umsatzprognose, Anzahl der Ladenbesuche usw.)
Es ist wichtig zu verstehen, dass sich die Ergebnisse ändern, wenn sich der verwendete Algorithmus ändert. Damit. Verwenden wir drei Typen: SVM, Entscheidungsbaum und zufällige Gesamtstruktur.
Es ist praktisch, "sklearn" zu verwenden, da die meisten Algorithmen umfassend sind.
#Support Vector Machine (SVM)
from sklearn.svm import SVC
#Entscheidungsbaum
from sklearn.tree import DecisionTreeClassifier
#Zufälliger Wald
from sklearn.ensemble import RandomForestClassifier
Nachdem Sie den gewünschten Algorithmus haben, trainieren wir das Modell. Zunächst müssen die Daten in Trainingsdaten und Verifizierungsdaten unterteilt werden.
Der Grund ist, dass nach dem Training des Modells, Wir brauchen eine Überprüfungsphase, um zu sehen, ob das Lernen gut verlaufen ist.
Eine Methode namens ** Holdout-Methode ** ist zum Teilen von Daten bekannt.
Teilen wir es zunächst in "erklärende Variablen" und "objektive Variablen" auf.
Beachten Sie die Spaltennamen in den Daten, die Sie gerade angezeigt haben. "Überlebt" befindet sich in der zweiten Zeile und die anderen Zeilen in der dritten und den folgenden Zeilen.
Es ist zweckmäßig, iloc [] zu verwenden, um Daten im DataFrame-Format in erklärende Variablen und objektive Variablen zu trennen. Weitere Informationen finden Sie im Artikel [hier].
#Erklärende Variable
X = df_train.iloc[:, 2:]
#Objektive Variable
t = df_train.iloc[:, 1]
Wenn Sie die erklärende Variable "X" aktivieren, werden die Spalten nach "Pclass" wie unten gezeigt korrekt extrahiert.
X.head()
Wenn Sie "t" aktivieren, können Sie auch den Überlebensstatus "0/1" extrahieren.
t.head()
Als nächstes werden die erklärenden Variablen und objektiven Variablen in ** Trainingsdaten ** und ** Validierungsdaten ** unterteilt.
Verwenden Sie train_test_split
von sklearn
.
#Bibliothek importieren
from sklearn.model_selection import train_test_split
#Ausführung der Teilung um 7: 3
X_train, X_valid, t_train, t_valid = train_test_split(X, t, train_size=0.7, random_state=0)
Sie können die Datenmenge mit len () überprüfen. Überprüfen Sie also, ob sie ordnungsgemäß in 7: 3 unterteilt ist.
#Originale Daten
print(len(df_train))
#Daten nach der Teilung
print(len(X_train), len(X_valid))
Sobald Sie den Algorithmus und die Daten installiert haben, müssen Sie endlich eine Nummer namens ** HyperParameter ** festlegen.
Hyperparameter sind Einstellungen, die für die Feinabstimmung des Algorithmus an die Daten verantwortlich sind.
--Algorithmus: Der Zweck besteht darin, den ** Analyseschnitt ** für die Daten zu bestimmen --Hyperparameter: Der Zweck besteht darin, ** Feineinstellungen ** vorzunehmen, damit der Algorithmus zu den Daten passt.
Lassen Sie uns drei Hyperparameter für jeden Algorithmus festlegen, damit Sie die Auswirkungen der Algorithmen und Hyperparameter verstehen können. Mit anderen Worten, "3 Arten von Algorithmen x 3 Arten von Hyperparametern = 9 Arten von Modellen" werden trainiert.
#Support Vector Machine (SVM)
model_svm_1 = SVC(C=0.1)
model_svm_2 = SVC(C=1.0)
model_svm_3 = SVC(C=10.0)
model_svm_1.fit(X_train, t_train)
model_svm_2.fit(X_train, t_train)
model_svm_3.fit(X_train, t_train)
#Entscheidungsbaum
model_dt_1 = DecisionTreeClassifier(max_depth=3)
model_dt_2 = DecisionTreeClassifier(max_depth=5)
model_dt_3 = DecisionTreeClassifier(max_depth=10)
model_dt_1.fit(X_train, t_train)
model_dt_2.fit(X_train, t_train)
model_dt_3.fit(X_train, t_train)
#Zufälliger Wald
model_rf_1 = RandomForestClassifier(max_depth=3)
model_rf_2 = RandomForestClassifier(max_depth=5)
model_rf_3 = RandomForestClassifier(max_depth=10)
model_rf_1.fit(X_train, t_train)
model_rf_2.fit(X_train, t_train)
model_rf_3.fit(X_train, t_train)
Nachdem wir 9 Modelltypen kennengelernt haben, überprüfen wir die Vorhersagegenauigkeit jedes Modells.
print('SVM_Vorhersagegenauigkeit von 1:', round(model_svm_1.score(X_valid, t_valid) * 100, 2), '%')
print('SVM_Vorhersagegenauigkeit von 2:', round(model_svm_2.score(X_valid, t_valid) * 100, 2), '%')
print('SVM_Vorhersagegenauigkeit von 3:', round(model_svm_3.score(X_valid, t_valid) * 100, 2), '%')
print('Entscheidungsbaum_Vorhersagegenauigkeit von 1:', round(model_dt_1.score(X_valid, t_valid) * 100, 2), '%')
print('Entscheidungsbaum_Vorhersagegenauigkeit von 2:', round(model_dt_2.score(X_valid, t_valid) * 100, 2), '%')
print('Entscheidungsbaum_Vorhersagegenauigkeit von 3:', round(model_dt_3.score(X_valid, t_valid) * 100, 2), '%')
print('Zufälliger Wald_Vorhersagegenauigkeit von 1:', round(model_rf_1.score(X_valid, t_valid) * 100, 2), '%')
print('Zufälliger Wald_Vorhersagegenauigkeit von 2:', round(model_rf_2.score(X_valid, t_valid) * 100, 2), '%')
print('Zufälliger Wald_Vorhersagegenauigkeit von 3:', round(model_rf_3.score(X_valid, t_valid) * 100, 2), '%')
Wenn ich den obigen Code ausführe, sieht das Ergebnis folgendermaßen aus: Es kann bestätigt werden, dass sich das Ergebnis (Vorhersagegenauigkeit) in Abhängigkeit von der Differenz zwischen Algorithmus und Hyperparametern ändert.
Diesmal war der zweite Entscheidungsbaum die beste Vorhersagegenauigkeit.
Wenn Sie AI tatsächlich entwickeln, können Sie die Hyperparameter einfacher einstellen, indem Sie die zuvor eingeführte ** Rastersuche ** verwenden. Wenn Sie mehr wissen möchten, können Sie die Implementierungsmethode unter Referenzartikel überprüfen.
Das Obige ist die Grundsequenz des maschinellen Lernens, die für die Entwicklung der KI (trainiertes Modell) erforderlich ist. Basierend auf diesem Fluss ist es gut, die komplizierte Methode zu verstehen, die eine bessere Vorhersagegenauigkeit ergeben kann.
Wenn Sie die Rückennummer lesen, können Sie den gesamten Prozess von den Grundlagen des maschinellen Lernens bis zur Python-Codierung verstehen.
Wenn Sie Ihre Programmierung vertiefen möchten, lesen Sie bitte den Artikel, der die erforderlichen Fähigkeiten behandelt.
P.S. Auf SNS werden auch verschiedene Informationen veröffentlicht. Wenn Sie also der Meinung sind, dass es in Ordnung ist, den Artikel zu lesen Ich wäre Ihnen dankbar, wenn Sie Twitter-Konto "Saku731" folgen könnten.
~~ Außerdem machen wir am Ende des Satzes für eine begrenzte Zeit "** Team Development Experience Project **". ~~ ~~ Wenn Sie interessiert sind, überprüfen Sie bitte [Application Sheet] für Details. ~~ (Zusatz) Die Frist wurde geschlossen, weil sie voll ist. Das nächste Mal ist für März 2019 geplant. Wenn Sie also informiert werden möchten, füllen Sie bitte das [[Reservierungsformular]] aus (https://forms.gle/62troSMPQv8wLitQ8).
Recommended Posts