Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren

Einführung

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.

Programmierkenntnisse für maschinelles Lernen erforderlich

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

Erstellen einer Python-Umgebung (Sie können sie überspringen)

** 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.

Vorbereitung) Abrufen der zu verwendenden Daten

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.

1) Visualisierung von Daten

Der Zweck der Datenvisualisierung besteht darin, "einen Eindruck von den gesamten Daten zu bekommen und die Vorverarbeitungsrichtlinie festzulegen".

Daten lesen

Ü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.

image.png

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

Bestätigung der Basisstatistik

Ü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

image.png

Umgang mit fehlenden Werten

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()

image.png

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.

image.png

Zeichnen Sie ein Diagramm

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)

image.png

■ 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)

image.png

■ 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)

image.png

■ 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.

image.png

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

image.png

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)

image.png

#Sterblichkeitsverhältnis zwischen Männern und Frauen
plt.bar(x=np.array(['female','male']), height=df_survived_0)

image.png

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.

2) Datenvorverarbeitung

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.

Kodierung kategorialer Variablen

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()

image.png

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].

image.png

3) Auswahl des Algorithmus

Was ist ein Algorithmus?

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.)

Diesmal verwendeter Algorithmus

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

4) Modelllernen

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.

Aufteilung in erklärende und objektive Variablen

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.

image.png

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()

image.png

Wenn Sie "t" aktivieren, können Sie auch den Überlebensstatus "0/1" extrahieren.

t.head()

image.png

Trainingsdaten: Verifizierungsdaten = 7: 3

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))

Hyper-Parametereinstellungen

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)

5) Modellüberprüfung

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.

image.png

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.

schließlich

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

Wie nutzt man maschinelles Lernen für die Arbeit? 03_Python-Codierungsverfahren
Wie nutzt man maschinelles Lernen für die Arbeit? 01_ Den Zweck des maschinellen Lernens verstehen
Wie nutzt man maschinelles Lernen für die Arbeit? 02_AI Entwicklungsprojektübersicht
Einführung in das maschinelle Lernen: Funktionsweise des Modells
scikit-learn Verwendung der Zusammenfassung (maschinelles Lernen)
[Python] Organisieren der Verwendung für Anweisungen
Verwendung von "deque" für Python-Daten
Eine Einführung in Python für maschinelles Lernen
python3: Verwendung der Flasche (2)
[Python] Verwendung von Liste 1
Wie benutzt man Python Argparse?
Python: Wie man pydub benutzt
[Python] Verwendung von checkio
[Python] Verwendung von input ()
Wie benutzt man Python Lambda?
[Python] Verwendung von virtualenv
python3: Verwendung der Flasche (3)
python3: Wie man eine Flasche benutzt
Verwendung von Python-Bytes
[BigQuery] Verwendung der BigQuery-API für die Python-Tabellenerstellung-
[Für Anfänger] Wie man den Befehl say mit Python benutzt!
Vorbereitung zum Starten von "Python Machine Learning Programming" (für macOS)
Einführung in IPython (Python2) in Mac OS X-Vorbereitung für den Einstieg in die Theorie des maschinellen Lernens
Python: So verwenden Sie Async mit
[Python] Verwendung von Matplotlib, einer Bibliothek zum Zeichnen von Diagrammen
[Python] Verwendung der Pandas-Serie
Verwendung von Anfragen (Python Library)
Verwendung von SQLite in Python
Die Verwendung von icrawler zum Sammeln von Daten zum maschinellen Lernen wurde vereinfacht
<Für Anfänger> Python-Bibliothek <Für maschinelles Lernen>
[Python] Verwendung von Liste 3 Hinzugefügt
Wie man MySQL mit Python benutzt
Verwendung der Python-API von OpenPose
Ich wusste nicht, wie ich die [Python] für die Anweisung verwenden sollte
Verwendung von ChemSpider in Python
Python: Verwendung von pydub (Wiedergabe)
Verwendung von PubChem mit Python
Verwendung der Zip-Funktion von Python
[Python] Verwendung der Typetalk-API
Sammeln von Daten zum maschinellen Lernen
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 8 Einführung in Numpy
[Einführung in Python] Wie verwende ich den Operator in in der for-Anweisung?
Verwendung eines externen Editors für die Python-Entwicklung mit Grasshopper
Python-Lernnotiz für maschinelles Lernen von Chainer Kapitel 9 Einführung in das Scikit-Lernen
[Python] Zusammenfassung der Verwendung von Pandas
Verstärken Sie Bilder für maschinelles Lernen mit Python
So installieren und verwenden Sie pandas_datareader [Python]
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Ich habe Python 3.5.1 installiert, um maschinelles Lernen zu studieren
Eine Einführung in OpenCV für maschinelles Lernen
Warum Python für maschinelles Lernen ausgewählt wird
[Python] Verwendung von __command__, Funktionserklärung
So arbeiten Sie mit BigQuery in Python
[Python] Verwendung von import sys sys.argv
Memorandum über die Verwendung von Gremlin Python
[Shakyo] Begegnung mit Python zum maschinellen Lernen
[Python2.7] Zusammenfassung der Verwendung von unittest
Python: Verwendung von Einheimischen () und Globalen ()
[Python] Webanwendungsdesign für maschinelles Lernen