[PYTHON] In 100 Tagen sind Sie Ingenieur. ――Tag 80 ――Programmieren ――Über maschinelles Lernen 5

Klicken Sie hier bis gestern

Sie werden in 100 Tagen Ingenieur - Tag 76 - Programmierung - Über maschinelles Lernen

Sie werden Ingenieur in 100 Tagen - Tag 70 - Programmieren - Über Scraping

Sie werden in 100 Tagen Ingenieur - Tag 66 - Programmierung - Über die Verarbeitung natürlicher Sprache

Sie werden in 100 Tagen Ingenieur - Tag 63 - Programmierung - Über Wahrscheinlichkeit 1

Sie werden Ingenieur in 100-Tage-Tag-59-Programmier-Über-Algorithmen

Sie werden in 100 Tagen Ingenieur --- Tag 53 - Git - Über Git

Sie werden in 100 Tagen Ingenieur - Tag 42 - Cloud - Über Cloud-Dienste

Sie werden in 100 Tagen Ingenieur - Tag 36 - Datenbank - Über die Datenbank

Sie werden Ingenieur in 100-Tage-24-Python-Grundlagen der Python-Sprache 1

Sie werden in 100 Tagen Ingenieur - Tag 18 - JavaScript - Grundlagen von JavaScript 1

Sie werden in 100 Tagen Ingenieur - 14. Tag - CSS - CSS-Grundlagen 1

Sie werden in 100 Tagen Ingenieur - Tag 6 - HTML - HTML-Grundlagen 1

Diese Zeit ist eine Fortsetzung der Geschichte über maschinelles Lernen.

Über den Datenverarbeitungsfluss des maschinellen Lernens

Der Arbeitsfluss beim Einbeziehen von maschinellem Lernen ist wie folgt.

  1. Bestimmen Sie den Zweck
  2. Datenerfassung
  3. Datenverständnis / Auswahl / Verarbeitung
  4. Erstellung des Data Mart (Datensatz)
  5. Modellerstellung
  6. Überprüfung der Genauigkeit
  7. Systemimplementierung

Davon werden 2-3 Teile als Datenvorverarbeitung bezeichnet.

Dieses Mal möchte ich aus dieser Vorverarbeitung einen Datamart erstellen.

Vorbehandlung bis gestern

Sprache ist Python Bibliotheken für maschinelles Lernen sind "Pandas" und "Numpy" Die Bibliothek zur Visualisierung verwendet "seaborn", "matplotlib".

** Laden der Bibliothek **

#Bibliothek laden
import pandas as pd 
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

%matplotlib inline

Von hier aus habe ich einen Data Mart erstellt.

Klicken Sie hier für den gestrigen Vortrag

Ab hier erstellen wir ein Modell mit Datamart.

Informationen zur Modellerstellung

Von hier aus wird maschinelles Lernen anhand der erstellten Daten durchgeführt.

Laden Sie zunächst die Bibliothek für maschinelles Lernen.

** Laden der Bibliothek für maschinelles Lernen **

scikit-learn: Bibliothek für maschinelles Lernen

from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split

from sklearn.metrics import recall_score,precision_score,f1_score,accuracy_score
from sklearn.metrics import confusion_matrix

"Scikit-learn" selbst ist eine riesige Bibliothek, die die Bibliothek grob erklärt. Laden Sie nur das, was Sie brauchen. Ich werde später über jeden Punkt sprechen.

Ablauf des Modellbaus

Es gibt mehrere Schritte zum Erstellen eines Modells.

Zunächst ist es die Arbeit, in "Trainingsdaten" und "Testdaten" zu unterteilen. Stellen Sie sich vor, Sie machen einen Aufnahmeprüfungstest.

Wenn Sie den Test im Voraus beantworten, erhalten Sie eine Punktzahl nahe der perfekten Punktzahl. Selbst beim maschinellen Lernen ist es daher wenig sinnvoll, die zuvor erlernten Daten zu überprüfen.

Die im Voraus zu trainierenden Daten werden so trainiert, dass die Daten zur Verifizierung nicht enthalten sind, und nach Abschluss des Lernmodells wird die Verifizierung mit den verbleibenden Testdaten erneut durchgeführt.

Wenn Sie nach der Überprüfung nicht zufrieden sind, ändern Sie die Methode, passen Sie die Parameter an und verarbeiten Sie sie erneut aus der Datenauswahl, um ein Modell zu erstellen.

** Datenaufteilung **

Hier wird die einfache Division durch die "Hold-out-Methode" durchgeführt. Mit train_test_split in Testdaten aufteilen.

X = Andere Daten als korrektes Etikett (mehrere Spalten) Y = Richtige Etikettendaten (1 Spalte)

"x_train, x_test, y_train, y_test = train_test_split (X, Y, test_size = Testgröße)"

Das "X" und "Y" geben hier die Spalten des gestern erstellten Datenrahmens an.

X = data_df.drop(['Survived'],axis=1)
Y = data_df['Survived']
x_train, x_test, y_train, y_test = train_test_split(X,Y, test_size=0.2)
print(len(x_train))
print(len(y_train))
print(len(x_test))
print(len(x_test))

712 712 179 179

Dadurch werden vier Daten erstellt: "Erklärende Variablendaten für das Training", "Objektive Variablendaten für das Training", "Erklärende Variablendaten zum Testen" und "Objektive Variablendaten zum Testen".

** Modell anrufen **

Als nächstes folgt der Modellaufruf. Entscheiden Sie, welche Methode verwendet werden soll, und rufen Sie sie aus der Bibliothek auf.

Hier Nennen Sie das "logistische Regressionsmodell". "Logistische Regression" wird häufig verwendet, um zwischen Binärwerten zu unterscheiden. "LogisticRegression" wird zu einem "logistischen Regressionsmodell".

clf = LogisticRegression()

** Modelllernen **

Nach dem Aufruf des Modells ist der nächste Schritt das Lernen. Das Lernen wird unter Verwendung von "Daten erklärender Variablen für das Training" und "Daten objektiver Variablen für das Training" durchgeführt. Grundsätzlich kann das Lernen in einer Zeile geschrieben werden.

clf.fit(x_train, y_train)

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True, intercept_scaling=1, l1_ratio=None, max_iter=100, multi_class='warn', n_jobs=None, penalty='l2', random_state=None, solver='warn', tol=0.0001, verbose=0, warm_start=False)

Dies ist das Ende des Lernens.

** Eine Vorhersage machen **

Als nächstes überprüfen Sie mit "Testdaten". Bei der Überprüfung wird das "Etikett" des Tests unter Verwendung der geteilten "Testdaten" vorhergesagt (bestimmt).

y_predict = clf.predict(x_test)

Das vorhergesagte Ergebnis wird jetzt in "y_predict" gespeichert. Der Inhalt enthält ein Array, das die richtige Antwort vorhersagt.

y_predict[0:5]

array([0, 0, 1, 0, 0])

Die Vorhersage gibt den Wert von "0" oder "1" aus. Da das "richtige Antwortetikett" auch die Daten des Werts "0" oder "1" sind, kann die Genauigkeit durch Vergleichen überprüft werden.

** Überprüfen Sie die Genauigkeit des Modells **

Als nächstes folgt die Genauigkeitsüberprüfung des Modells. Berechnen Sie, wie genau das Modell ist. Da die Bibliothek zur Überprüfung der Genauigkeit aus der Bibliothek geladen wird, werde ich sie vorstellen

confusion_matrix: 2x2 richtige / falsche Tabelle ausgeben Genauigkeitsbewertung: Berechnen Sie die richtige Antwortrate präzise_bewertung: Berechnen Sie die Genauigkeitsrate Recall_score: Rückruf berechnen f1_score: Berechnet den harmonisierten Durchschnitt der Genauigkeit x Rückruf

Es ist geworden.

Wenn ich versuche, die Genauigkeit sofort zu überprüfen

print(pd.DataFrame(confusion_matrix(y_predict, y_test), index=['predict 0', 'predict 1'], columns=['real 0', 'real 1']))
print()
print('accuracy  : ',accuracy_score(y_test, y_predict))
print('precision : ',precision_score(y_test, y_predict))
print('recall    : ',recall_score(y_test, y_predict))
print('f1_score  : ',f1_score(y_test, y_predict))

real 0 real 1 predict 0 100 25 predict 1 15 39

accuracy : 0.776536312849162 precision : 0.7222222222222222 recall : 0.609375 f1_score : 0.6610169491525424

Das Ergebnis ist so. Bei der Erstellung eines Modells mit diesen Daten beträgt die Genauigkeit der "Genauigkeit" etwa 77,6%.

Lesen des numerischen Werts zum Zeitpunkt der Überprüfung

Zunächst wird das Ergebnis der Vorhersage in "0" und "1" unterteilt. Da die korrekten Antwortetikettendaten im Voraus auch in "0" und "1" unterteilt werden, gibt es ein 2x2-Muster als korrekte / falsche Tabelle.

Die Beziehung zwischen Vorhersage und tatsächlicher Messung ist wie folgt.

Tatsächliche Messung 0 Tatsächliche Messung 1
Vorhersage 0 100 25
Vorhersage 1 15 39

Von hier aus berechnen wir die Genauigkeitsrate. Die richtige Antwortrate ist "(Istmessung 0 Vorhersage 0 Wert + Istmessung 1 Vorhersage 1 Wert) / Gesamtwert aller" Es wird sein.

(100 + 39)/(100 + 25 + 15 + 39) = 139/179 = 0.7765

Als nächstes kommt die Präzision. Die Genauigkeitsrate ist Tatsächliche Messung 1 Vorhersage 1 Wert / Vorhersage 1 Wert Es wird sein.

39/(15 + 39) = 39/54 = 0.7222

Als nächstes kommt die Rückrufrate. Die Rückrufquote beträgt Tatsächliche Messung 1 Vorhersage 1 Wert / Tatsächliche Messung 1 Wert Es wird sein.

39/(25 + 39) = 39/64 = 0.609

Schließlich f1_score. f1_score ist Es ist ein harmonisierter Durchschnitt aus Präzision und Erinnerung.

2 * Konformitätsrate * Rückrufrate / (Konformitätsrate + Rückrufrate)

2 * 0.7222 * 0.609 / (0.7222 + 0.609) = 0.8802 / 1.3316 = 0.6610

Welcher numerische Wert bei der Überprüfung hervorgehoben wird, hängt vom Zweck des maschinellen Lernens ab. Dieses Mal treffen wir eine binäre Beurteilung, aber wenn die richtigen Antwortetiketten gleichmäßig in der gleichen Menge aufgeteilt sind, reicht die richtige Antwortrate aus. Wenn eine der Daten klein oder groß und voreingenommen ist, ist es möglicherweise nicht wünschenswert, die richtige Antwortrate zu verwenden.

Wenn die Daten beispielsweise ein Verhältnis von 99: 1 haben, können Sie eine korrekte Antwortrate von 99% erhalten, wenn Sie alle Beschriftungen mit der größeren übereinstimmen. Denken Sie an die Diagnose einer Krankheit.

Wenn Sie ein Modell erstellen, bei dem nicht jeder krank ist, beträgt die korrekte Antwortrate 99%, aber die restlichen 1% werden übersehen und kranke Menschen werden in Schwierigkeiten geraten. In diesem Fall ist es in Ordnung, einen kleinen Fehler zu machen. Wenn Sie also kein Modell haben, das kranke Menschen erkennen kann, werden Sie die Minderheit vermissen.

Die Genauigkeit ist der Prozentsatz der Daten, von denen vorhergesagt wird, dass sie positiv sind, der tatsächlich positiv ist, und der Rückruf ist der Prozentsatz der tatsächlichen positiven Daten, von denen vorhergesagt werden kann, dass sie positiv sind. Ich werde.

Wenn Sie feststellen, dass der Zweck des maschinellen Lernens darin besteht, sich ordnungsgemäß auf die Minderheit zu verlassen, können Sie ein Modell auswählen, das ordnungsgemäß erkannt werden kann, wobei der Schwerpunkt auf dem Rückruf liegt.

Wenn Sie dies jedoch tun, werden Sie möglicherweise zu sehr erwischt. In diesem Fall wird f1_score als Index verwendet, der sowohl die Genauigkeit als auch den Rückruf berücksichtigt.

** Andere Modelle **

Schauen wir uns auch andere Modelle an. Wir werden das Modell hier nur vorstellen und nicht auf Details eingehen. Erstens ist der Entscheidungsbaum.


#Entscheidungsbaum
clf = DecisionTreeClassifier()
clf.fit(x_train, y_train)
y_predict = clf.predict(x_test)
print(pd.DataFrame(confusion_matrix(y_predict, y_test), index=['predict 0', 'predict 1'], columns=['real 0', 'real 1']))
print()
print('accuracy  : ',accuracy_score(y_test, y_predict))
print('precision : ',precision_score(y_test, y_predict))
print('recall    : ',recall_score(y_test, y_predict))
print('f1_score  : ',f1_score(y_test, y_predict))

real 0 real 1 predict 0 95 26 predict 1 20 38

accuracy : 0.7430167597765364 precision : 0.6551724137931034 recall : 0.59375 f1_score : 0.6229508196721311

Als nächstes kommt Random Forest


# RandomForest
clf = RandomForestClassifier()
clf.fit(x_train, y_train)
y_predict = clf.predict(x_test)
print(pd.DataFrame(confusion_matrix(y_predict, y_test), index=['predict 0', 'predict 1'], columns=['real 0', 'real 1']))
print()
print('accuracy  : ',accuracy_score(y_test, y_predict))
print('precision : ',precision_score(y_test, y_predict))
print('recall    : ',recall_score(y_test, y_predict))
print('f1_score  : ',f1_score(y_test, y_predict))

real 0 real 1 predict 0 98 26 predict 1 17 38

accuracy : 0.7597765363128491 precision : 0.6909090909090909 recall : 0.59375 f1_score : 0.6386554621848739

​ ** Berechnung des Beitragssatzes **

Im Modell des maschinellen Lernens gibt es Dinge, die den Beitragssatz angeben können, zu dem Daten beigetragen haben.

clf.featureimportances


for i,v in zip(x_train.columns,clf.feature_importances_):
    print(i,'\t',v)

SibSp 0.08181730881501241 Parch 0.053030544663722166 Fare 0.40243782816341556 Sex2 0.28228147632317596 Pe_0.0 0.03352832009152742 Pe_1.0 0.014542002215684312 Pe_2.0 0.02212292439144309 Pe_3.0 0.022599544658725688 Pe_4.0 0.013099652111940165 Pe_5.0 0.013494114387414768 Pe_6.0 0.005599733163595443 Pe_7.0 0.002340597855733169 Pe_8.0 0.0030199997376331917 Em_C 0.012248329962351154 Em_N 0.0010747396045908525 Em_Q 0.010808812977944686 Em_S 0.025954070876089957

Zusammenfassung

Gestern habe ich die Daten verarbeitet, um einen Datamart für maschinelles Lernen zu erstellen. Heute werden wir ein Vorhersagemodell erstellen und die Genauigkeit anhand dieser Daten überprüfen. Das Erstellen des Modells selbst ist ziemlich einfach und die Menge an Code, die Sie schreiben, ist viel geringer.

Daher ist es beim Erstellen eines Modells wichtig zu entscheiden, welches Modell ausgewählt werden soll. Da die Gesamtmenge des zu schreibenden Codes gering ist, besteht die Aufgabe darin, verschiedene Modelle zu erstellen, zu überprüfen und das Modell mit der höchsten Genauigkeit auszuwählen.

Wenn die Genauigkeit gering ist, probieren Sie andere Modelle aus. Wenn sie immer noch niedrig ist, kehren Sie zur Datenvorverarbeitung zurück und beginnen Sie von vorne. Wiederholen Sie diesen Zyklus, bis Sie ein überzeugendes Modell haben, und beginnen Sie von der schlechtesten Datenerfassung.

Lassen Sie uns zuerst mit dem gesamten Fluss aufwachen.

20 Tage bis Sie Ingenieur werden

Informationen zum Autor

HP von Otsu py: http://www.otupy.net/

Youtube: https://www.youtube.com/channel/UCaT7xpeq8n1G_HcJKKSOXMw

Twitter: https://twitter.com/otupython

Recommended Posts

In 100 Tagen sind Sie Ingenieur. ――Tag 81 ――Programmieren ――Über maschinelles Lernen 6
In 100 Tagen sind Sie Ingenieur. ――Tag 79 ――Programmieren ――Über maschinelles Lernen 4
In 100 Tagen sind Sie Ingenieur. ――Tag 76 ――Programmieren ――Über maschinelles Lernen
In 100 Tagen sind Sie Ingenieur. ――Tag 80 ――Programmieren ――Über maschinelles Lernen 5
In 100 Tagen sind Sie Ingenieur. ――Tag 78 ――Programmieren ――Über maschinelles Lernen 3
Sie werden in 100 Tagen Ingenieur. ――Tag 84 ――Programmieren ――Über maschinelles Lernen 9
In 100 Tagen sind Sie Ingenieur. ――Tag 83 ――Programmieren ――Über maschinelles Lernen 8
In 100 Tagen sind Sie Ingenieur. ――Tag 77 ――Programmieren ――Über maschinelles Lernen 2
In 100 Tagen sind Sie Ingenieur. ――Tag 85 ――Programmieren ――Über maschinelles Lernen 10
In 100 Tagen sind Sie Ingenieur. ――Tag 71 ――Programmieren ――Über das Schaben 2
In 100 Tagen sind Sie Ingenieur. ――Tag 61 ――Programmieren ――Über Erkundung
In 100 Tagen sind Sie Ingenieur. ――Tag 74 ――Programmieren ――Über das Schaben 5
In 100 Tagen sind Sie Ingenieur. ――Tag 75 ――Programmieren ――Über das Schaben 6
In 100 Tagen sind Sie Ingenieur. ――Tag 68 ――Programmieren ――Über TF-IDF
In 100 Tagen sind Sie Ingenieur. ――Tag 70 ――Programmieren ――Über das Schaben
Sie werden in 100 Tagen Ingenieur. ――Tag 65 ――Programmieren ――Über Wahrscheinlichkeit 3
Sie werden in 100 Tagen Ingenieur - Tag 86 - Datenbank - Über Hadoop
In 100 Tagen sind Sie Ingenieur. ――Tag 60 ――Programmieren ――Über Datenstruktur und Sortieralgorithmus
Sie werden in 100 Tagen Ingenieur - Tag 34 - Python - Python-Übung 3
Sie werden in 100 Tagen Ingenieur - 31. Tag - Python - Python-Übung 2
Sie werden in 100 Tagen Ingenieur. ――Tag 67 ――Programmieren ――Über morphologische Analyse
Sie werden in 100 Tagen Ingenieur. ――Tag 66 ――Programmieren ――Über die Verarbeitung natürlicher Sprache
Sie werden in 100 Tagen Ingenieur. ――Tag 30 ―― Python ―― Grundlagen der Python-Sprache 6
Sie werden in 100 Tagen Ingenieur. ――Tag 25 ―― Python ―― Grundlagen der Python-Sprache 2
Sie werden in 100 Tagen Ingenieur - 29. Tag - Python - Grundlagen der Python-Sprache 5
Sie werden in 100 Tagen Ingenieur - Tag 33 - Python - Grundlagen der Python-Sprache 8
Sie werden in 100 Tagen Ingenieur - 26. Tag - Python - Grundlagen der Python-Sprache 3
Sie werden in 100 Tagen Ingenieur - Tag 35 - Python - Was Sie mit Python tun können
Sie werden in 100 Tagen Ingenieur - Tag 32 - Python - Grundlagen der Python-Sprache 7
Sie werden in 100 Tagen Ingenieur - 28. Tag - Python - Grundlagen der Python-Sprache 4
Werden Sie bald KI-Ingenieur! Lernen Sie in wenigen Tagen umfassend Python / KI / Maschinelles Lernen / Deep Learning / Statistische Analyse!
Sie müssen vorsichtig mit den Befehlen sein, die Sie jeden Tag in der Produktionsumgebung verwenden.
Erstellen Sie mit Python eine interaktive Umgebung für maschinelles Lernen
Über das Testen bei der Implementierung von Modellen für maschinelles Lernen
Maschinelles Lernen Über Overlearning
Programmieren des Lernprotokolls 2. Tag
Bis ein Ingenieur, der einmal über maschinelles Lernen frustriert war, es schafft, maschinelles Lernen bei der Arbeit einzusetzen
[Maschinelles Lernen] Fassen wir die zufällige Gesamtstruktur auf leicht verständliche Weise zusammen
Maschinelles Lernen in Delemas (Praxis)
Eine Einführung in das maschinelle Lernen
Python Machine Learning Programming> Schlüsselwörter
Wird in EDA für maschinelles Lernen verwendet
Wie wäre es mit Anaconda zum Erstellen einer maschinellen Lernumgebung mit Python?
Lernen Sie maschinelles Lernen jederzeit und überall in der bedarfsgesteuerten Jupyter Notebook-Umgebung