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

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 das Klassifizierungsmodell

Ich werde erklären, was Sie zum ersten Mal mit maschinellem Lernen tun können, aber was Sie mit maschinellem Lernen tun können Grundsätzlich gibt es drei.

· Rückkehr ・ Klassifizierung ・ Clustering

Grob gesagt wird es zu "Vorhersage", aber der Teil dessen, was "vorherzusagen" ist, ändert sich.

・ Return: Numerische Werte vorhersagen ・ Klassifizierung: Kategorien vorhersagen ・ Clustering: Fühlen Sie sich gut an

Das "Klassifizierungsmodell" dient zur Vorhersage des Kategoriewerts.

Die diesmal verwendeten Daten sind die Daten von "Iris" (Ayame), die an "Scikit-Learn" angehängt sind.

sepal length (cm) Die Länge des Stückes
sepal width (cm) Breite des Stückes
petal length (cm) Blütenblattlänge
petal width (cm) Blütenblattbreite

Es gibt drei Arten von Iris: "Setosa", "Versicolor" und "Virginica".

Datenvisualisierung

Lesen wir die Daten und schauen wir uns die Daten an.

from sklearn.datasets import load_iris
import pandas as pd
import numpy as np

#Irisdaten lesen
iris = load_iris()
#In Datenrahmen konvertieren
df = pd.DataFrame(np.concatenate((iris.data, iris.target.reshape(-1,1)), axis=1),columns=iris.feature_names + ['type'])
df.head()
sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) type
0 5.1 3.5 1.4 0.2 0
1 4.9 3 1.4 0.2 0
2 4.7 3.2 1.3 0.2 0
3 4.6 3.1 1.5 0.2 0
4 5 3.6 1.4 0.2 0

Es handelt sich um 3 Arten von Ayame-Daten (nicht starr) und enthält 150 Zeilen mit numerischen Daten für 4 Spalten. Die letzte Spalte "Typ" ist die Sorte Ayame.

Da diesmal drei Arten von Daten verwendet werden, sind die Zahlen "0", "1" und "2".

Lassen Sie uns visualisieren, welche Art von Funktionen angezeigt werden.

import matplotlib.pyplot as plt
%matplotlib inline

#Speichern Sie Visualisierungsdaten in Variablen
x1 = df['petal length (cm)']
x2 = df['petal width (cm)']
y  = df['type']
x  = df[['petal length (cm)','petal width (cm)']]

#Daten zeichnen
for i in range(3):
    plt.scatter(x1[y==i],x2[y==i],marker="x",label=i)
plt.legend()
plt.grid()
plt.show()

image.png

Es sieht so aus, als ob die drei Arten von Ayame ziemlich gut getrennt und zusammengefügt sind.

Versuchen wir nun Normalisierung und Standardisierung, eine der Methoden zur Verarbeitung von Daten zum maschinellen Lernen.

Normalisierung (Min-Max-Normalisierung)

Die Normalisierung ist eine Methode zum Konvertieren des Minimalwerts in die Skala von 0 und des Maximalwerts in die Skala von 1. Es wird jedoch gesagt, dass die Methode unter Verwendung der Minimal- und Maximalwerte stark von den Maximal- und Minimalwerten beeinflusst wird.

Normalisierter Wert = (Wert-Minimalwert) / (Maximalwert-Minimalwert)

Standardisierung (Z-Score-Normalisierung)

Durch die Standardisierung wird der Bereich der numerischen Daten so geändert, dass der Durchschnitt 0 und die Verteilung 1 beträgt. Auf diese Weise soll es widerstandsfähiger gegen Ausreißer sein als die Normalisierung.

"Standardwert = (Wertmittelwert) / Standardabweichung"

Standardisierung kann den Umfang der Daten verringern und das Lernen beschleunigen.

Wenn die Skala zwischen den einzelnen erklärenden Variablen erheblich unterschiedlich ist (Größe, Gewicht usw.) Größere Skalenvariablen wirken sich auf das Lernen aus und können durch Standardisierung behoben werden.

Normalisierungsmethode

Normalisierung und Standardisierung können mit dem folgenden Code durchgeführt werden.

Verwenden Sie "MinMaxScaler" und "StandardScaler" als Bibliotheken.

** Datenaufteilung **

Teilen Sie zunächst die Daten für Training und Test auf. Diesmal teilen wir uns um 7: 3.

#Daten teilen
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=3)

** Normalisierung durchführen **

#Normalisierung durchführen
from sklearn.preprocessing import MinMaxScaler
mms = MinMaxScaler()

#Trainingsdaten normalisieren
x_train_norm = mms.fit_transform(x_train)

#Normalisieren Sie die Testdaten basierend auf den Trainingsdaten
x_test_norm = mms.transform(x_test)

print('Maximale Trainingsdaten: ' , x_train_norm.max())
print('Mindestwert der Trainingsdaten: ' , x_train_norm.min())
#Die Testversion basiert auf Trainingsdaten, kann also etwas anders sein.
print('Maximalwert der Testdaten: ' , x_test_norm.max())
print('Mindestwert der Testdaten: ' , x_test_norm.min())

Maximale Trainingsdaten: 1.0 Mindesttrainingsdaten: 0.0 Maximalwert der Testdaten: 1.0357142857142858 Minimale Testdaten: -0.017857142857142877

** Standardisieren **

#Standardisieren
from sklearn.preprocessing import StandardScaler
ss = StandardScaler()

x_train_std = ss.fit_transform(x_train)
x_test_std  = ss.transform(x_test)

print('Durchschnittswert der Trainingsdaten: ' , x_train_std.mean())
print('Standardabweichung der Trainingsdaten: ' , x_train_std.std())
#Die Testversion basiert auf Trainingsdaten, kann also etwas anders sein.
print('Durchschnittswert der Testdaten: ' , x_test_std.mean())
print('Standardabweichung der Testdaten: ' , x_test_std.std())

Durchschnittliche Trainingsdaten: 3.425831047414769e-16 Standardabweichung der Trainingsdaten: 1.0000000000000002 Durchschnittswert der Testdaten: -0,1110109621182351 Standardabweichung der Testdaten: 1.040586519459273

Bei Standardisierung liegt der Durchschnitt nahe bei 0.

Lassen Sie uns den Unterschied zwischen dem Ergebnis der Normalisierung und Standardisierung und den Originaldaten sehen.

#Visualisieren Sie die Originaldaten nach der Normalisierung und Standardisierung
x_norm = mms.transform(x)
x_std  = ss.transform(x)
plt.axis('equal')
plt.scatter(x.iloc[:,0],x.iloc[:,1], marker="x", label="org" ,c='blue')
plt.scatter(x_std[:,0] ,x_std[:,1] , marker="x", label="std" ,c='red')
plt.scatter(x_norm[:,0],x_norm[:,1], marker="x", label="norm",c='green')
plt.legend()
plt.grid()
plt.show()

image.png

Blau ist der ursprüngliche Wert, Rot sind die standardisierten Daten und Grün sind die normalisierten Daten. Sie sehen, dass sich die möglichen Verteilungen erheblich geändert haben.

Erstellen eines Vorhersagemodells

Lassen Sie uns den Unterschied zwischen den maschinellen Trainingsergebnissen der Normalisierung, den standardisierten Daten und den Originaldaten sehen. Im Folgenden wird das Ergebnis der Klassifizierung mit "Logistic Regression" ausgegeben. Je höher der Score-Wert, desto besser die Genauigkeit.

#Laden Sie ein logistisches Regressionsmodell
from sklearn.linear_model import LogisticRegression
lr      = LogisticRegression(solver='liblinear', multi_class='auto')
lr_norm = LogisticRegression(solver='liblinear', multi_class='auto')
lr_std  = LogisticRegression(solver='liblinear', multi_class='auto')

lr.fit(x_train,y_train)
print('Originaldatenbewertung:',lr.score(x_train,y_train))

lr_norm.fit(x_train_norm,y_train)
print('Punktzahl der normalisierten Daten:',lr_norm.score(x_train_norm,y_train))

lr_std.fit(x_train_std,y_train)
print('Standardisierte Datenbewertung:',lr_std.score(x_train_std,y_train))

Ursprüngliche Datenbewertung: 0,8666666666666667 Normalisierte Datenbewertung: 0,8095238095238095 Standardisierte Datenbewertung: 0,9523809523809523

Die Genauigkeit standardisierter Daten ist viel höher.

Das Diskriminanzmodell gibt schließlich den vorhergesagten Wert der Zielvariablen aus. In diesem Fall geben Sie einen der Werte "0", "1", "2" als Kategoriewert aus und prüfen Sie, ob das Ergebnis mit den Testdaten übereinstimmt. Ich messe die Genauigkeit.

Die Methode zur Überprüfung der Genauigkeit ist dieselbe wie in der Vorlesung "Über maschinelles Lernen 5" vom Vortag.

Typ des Klassifizierungsmodells

Hier sind einige andere Klassifizierungsmodelle.

** Entscheidungsbaum **

Referenz: Wikipedia

Apropos Klassifizierung, es ist eine Methode, die oft so angewendet wird, als wäre es diese. Während des Lernens verzweigt es sich nach dem Wert der Variablen und schließlich ist es ein Modell, das in Form eines Baumes visualisiert werden kann.

** Zufälliger Wald **

Es ist ein "Ensemble Learning" -Algorithmus, der einen Entscheidungsbaum als schwachen Lernenden verwendet. Ursprünglich handelt es sich um einen Entscheidungsbaum, aber mehrere Entscheidungsbäume werden zufällig erstellt und parallel angeordnet, um eine Mehrheitsentscheidung über die Ergebnisse zu treffen.

** Gradient Boosting Entscheidungsbaum **

Es wird als GBDT (Gradient Boosting Decision Tree) abgekürzt. Dies wird auch basierend auf dem Entscheidungsbaum gelernt, und das Lernen wird wiederholt, um den Fehler aus dem Ergebnis zu reduzieren. Es ist eine Technik, um daraus die endgültige Schlussfolgerung zu ziehen. Je mehr Sie lernen, desto besser ist die Genauigkeit.

Die derzeitige Mainstream-Methode heißt "Boosting".

Beide sind in der "Scikit-Learn" -Bibliothek enthalten, sodass Sie mit ihnen experimentieren können.

Zusammenfassung

Heute habe ich erklärt, wie das Klassifizierungsmodell funktioniert. Es gibt viele andere Klassifizierungsmodelle.

Beginnen wir zunächst mit der Klassifizierung und unterdrücken, wie ein Modell erstellt und überprüft wird.

18 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 82 ――Programmieren ――Über maschinelles Lernen 7
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 73 ――Programmieren ――Über das Schaben 4
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 24 ―― Python ―― Grundlagen der Python-Sprache 1
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
Über maschinelles Lernen gemischte Matrix
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