[PYTHON] Lernen mit dem Lehrer 1 Grundlagen des Lernens mit dem Lehrer (Klassifizierung)

Aidemy 2020/9/24

Einführung

Hallo, es ist ja! Ich bin eine knusprige Literaturschule, aber ich war an den Möglichkeiten der KI interessiert, also ging ich zur AI-spezialisierten Schule "Aidemy", um zu studieren. Ich möchte das hier gewonnene Wissen mit Ihnen teilen und habe es in Qiita zusammengefasst. Ich freue mich sehr, dass viele Menschen den vorherigen zusammenfassenden Artikel gelesen haben. Vielen Dank! Dies ist der erste Beitrag zum überwachten Lernen. Freut mich, dich kennenzulernen.

Was diesmal zu lernen ・ Überblick über das betreute Lernen ・ Arten des überwachten Lernens (Klassifizierung)

Über betreutes Lernen (Klassifizierung)

Was ist überwachtes Lernen (Klassifikation)?

・ Als Voraussetzung ist überwachtes Lernen eine "Methode, Lerndaten und korrekte Antwortdaten (Lehrerdaten) zu geben und bis zur richtigen Antwort zu denken", und der Zweck besteht darin, unbekannte Daten dadurch vorherzusagen. ・ Überwachtes Lernen kann in "Klassifizierungsprobleme" und "Rückkehrprobleme" unterteilt werden. Dieses Mal werden wir uns das Klassifizierungsproblem ansehen. -Das Klassifizierungsproblem ist __ "Lernen der Daten nach Kategorien geteilt und Vorhersagen der Kategorie (diskreter Wert) unbekannter Daten" __. Beispielsweise können "Erkennung handgeschriebener Zeichen von 0 bis 9", "Identifizierung dessen, was auf dem Bild erscheint", "Vorhersage des Verfassers von Sätzen", "Identifizierung von Männern und Frauen in Gesichtsfotos" und dergleichen erwähnt werden.

-Klassifizierungsprobleme werden in __ "binäre Klassifizierung" und "Mehrfachzeitraumklassifizierung" __ unterteilt. ・ Die binäre Klassifizierung klassifiziert wie die Geschlechtserkennung danach, ob sie zu einer Gruppe gehört oder nicht. In einigen Fällen können die Klassen durch eine gerade Linie identifiziert werden (lineare Klassifizierung). -Mehr-Term-Klassifizierung hat viele Klassen, die klassifiziert werden können, wie z. B. die Erkennung von Zahlen.

Fluss des maschinellen Lernens

・ Datenvorverarbeitung → Algorithmusauswahl → Modelllernen → Modellvorhersage

Daten erstellen

from sklearn.datasets import make_classification
#Erstellen Sie Daten mit 50 Daten, 3 Klassen, 2 Features, 1 zusätzlichen Features und 0 Seeds
X,y=make_classification(n_samples=50,n_classes=3,n_features=2,n_redundant=1,random_state=0)

Beispieldaten abrufen

-Sie können den in der scikit-learn-Bibliothek (sklearn) bereitgestellten Beispieldatensatz aufrufen.

#Rufen Sie die Irisdaten auf, die ein Beispiel für Iris sind.

#Modul importieren (Datensatz zum Abrufen von Irisdaten),Trainiere, um die Holdout-Methode anzuwenden_test_Import von sklearn getrennt)
from sklearn import datasets
from sklearn.model_serection import train_test_split
import numpy as np

#Holen Sie sich Iris-Daten
iris=datasets.load_iris()

#Teilen Sie in Trainingsdaten und Testdaten (Holdout-Methode):Testrate 30%)
X=iris.data[:,[0,2]]  #Von den Merkmalen der Iris die 0. und 2. Spalte ("Gaku-Länge" und "Blütenblattlänge")
                      #(= Lerndaten)
y=iris.target         #Iris Klassenetikett (= Lehrerdaten mit korrekten Sorten geschrieben)

train_X,test_X,train_y,test_y = train_test_split(X,y,test_size=0.3,random_state=0)

Ein Modell bauen

・ Was Sie lernen und vorhersagen, wird als Modell bezeichnet. Mit scikit-learn können Sie ein Modell wie Ruby on Rails aufrufen und es trainieren und Vorhersagen treffen lassen. -Erstellen eines Modells: __ model () __ ・ Lernen: __model name.fit (Trainingsdaten trainieren, Lehrerdaten trainieren) __ ・ Vorhersage: __model name.predict (data) __

#Importieren Sie ein Modell namens LogisticRegression.
from sklearn.liner_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.datasets import make_classification
#Datenerstellung (50 Daten, 2 Klassen, 3 Funktionen) und Klassifizierung in Zug und Test
X,y = make_classification(n_samples=50,n_classes=2,n_features=3,n_redundant=0,random_state=0)
train_X,test_X,train_y,test_y = train_test_split(X,y,random_state=0)
#Modellierung, Training, Vorhersage
model = LogisticRegression(random_state=0)
model.fit(train_X,train_y)
pred_y = model.predict(test_X)
print(pred_y) #[1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 0 0 0 1 1 1]
print(test_y) #[1 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 1 1 1]

Klassifizierungsmethode (Grenzen zwischen Klassen setzen)

Sechs Typen für diese Zeit

-__ Logistische Regression : Die Grenzlinie ist gerade → nur lineare Klassifizierung. Geringe Generalisierungsfähigkeit. - Lineare SVM__: Rand ist gerade → nur lineare Klassifizierung. Hohe Generalisierungsfähigkeit. Lernen / Vorhersagen ist langsam. -__ Nichtlineare SVM : Konvertiert die nichtlineare Klassifizierung in eine lineare Klassifizierung und verarbeitet sie als lineare SVM. - Baum bestimmen__: Bestimmt die Klasse für jedes Datenelement. Es ist nicht leicht von Ausreißern betroffen. Nur lineare Klassifizierung. Nicht verallgemeinert. -__ Random Forest__: Bestimmen Sie die Klasse mithilfe des Bestimmungsbaums für zufällige Daten. Eine nichtlineare Klassifizierung ist ebenfalls möglich. -__ K-NN__: Extrahiert Lehrerdaten ähnlich den Vorhersagedaten und gibt die häufigste Klasse als Vorhersageergebnis aus. Die Lernkosten betragen 0. Hohe Vorhersagegenauigkeit. Es verlangsamt sich mit zunehmender Datenmenge.

Logistische Rückgabe

-Hier wird das Vorhersageergebnis des Modells in einem Diagramm (Streudiagramm) angezeigt und durch Farbcodierung visualisiert. ・ (Überprüfung) Streudiagrammerstellung: plt.scatter (Daten der x-Achse, Daten der y-Achse, c = [Liste], marker = "Markertyp", cmap = "Farbsystem") -__ Np.meshgrid (x, y) __, das unten angezeigt wird, ist eine Funktion, die Koordinaten (x, y) in eine Matrix konvertiert und diese übergibt.

#Importieren Sie plt, um ein Diagramm zu erstellen, und np, um Koordinaten abzurufen
import matplotlib.pyplot as plt
import numpy as np
#plt.Erstellen eines Streudiagramms mit Streuung (die 0. Spalte der Trainingsdaten X ist die x-Achse und die 1. Spalte ist die y-Achse)
plt.scatter(X[:,0],X[:,1],c=y,marker=".",cmap=matplotlib.cm.get_cmap(name="cool"),alpha=1.0)
#Geben Sie den Bereich der x-Achse (x1) und der y-Achse (x2) an, der als Nächstes angegeben werden soll
x1_min,x1_max = X[:,0].min()-1, X[:,0].max()+1
x2_min,x2_max = X[:,1].min()-1, X[:,1].max()+1
#np.Mit Meshgrid 0 Grafik.Speichern Sie die x-Koordinate des Schnittpunkts von x1 und x2 getrennt durch 02 in xx1 und die y-Koordinate in xx2 (np.arrange(Mindestwert,Maximalwert,Intervall))
xx1,xx2 = np.meshgrid(np.arange(x1_min,x1_max,0.02),np.arange(x2_min,x2_max,0.02))
#Koordinaten (xx1,Vorhersage mit Modell für die Folge von xx2) und plt.Zeichnen Sie das Ergebnis mit comtourf
Z=model.predict(np.array([xx1.ravel(),xx2.ravel()]).T).reshape((xx1.shape))
plt.contourf(xx1,xx2,Z,alpha=0.4,cmap=matplotlib.cm.get_cmap(name="Wistia"))
#Ausgabe mit Diagrammbereich, Titel, Beschriftungsnamen und Rastereinstellungen
plt.xlim(xx1.min(), xx1.max())
plt.ylim(xx2.min(), xx2.max())
plt.title("classification data using LogisticRegression")
plt.xlabel("Sepal length")
plt.ylabel("Petal length")
plt.grid(True)
plt.show()

Lineare SVM

-Borderline ist gerade → nur lineare Klassifizierung. Hohe Generalisierungsfähigkeit. Lernen / Vorhersagen ist langsam. -SVM ist eine "Support Vector Machine". Unterstützungsvektoren sind Daten, die in der Nähe anderer Klassen liegen und leicht verallgemeinert werden können, da die Grenzen so gezeichnet werden, dass diese Entfernungen am längsten sind.

-Linear SVM kann mit __LinearSVC () __ implementiert werden. Davon abgesehen kann es auf die gleiche Weise wie die logistische Regression implementiert werden.

Nichtlineare SVM

-Konvertieren Sie die nichtlineare Klassifizierung in eine lineare Klassifizierung und verarbeiten Sie sie als lineare SVM.

Entscheidungsbaum

Zufälliger Wald

k-NN

Zusammenfassung

Diese Zeit ist vorbei. Vielen Dank, dass Sie so weit gelesen haben.

Recommended Posts

Lernen mit dem Lehrer 1 Grundlagen des Lernens mit dem Lehrer (Klassifizierung)
Betreutes Lernen (Klassifizierung)
Lernen mit einem Lehrer (Rückkehr) 1 Grundlagen
Python: Überwachtes Lernen (Klassifizierung)
Grundlagen des Lernens mit einem Lehrer Teil 1 - Einfache Regression - (Hinweis)
Grundlagen des Lernens mit einem Lehrer Teil 3 - Multiple Regression (Implementierung) - (Anmerkungen) -
Grundlagen des maschinellen Lernens (Denkmal)
Überwachtes maschinelles Lernen (Klassifikation / Regression)
Python: Anwendung des überwachten Lernens (Rückkehr)
[Lernnotiz] Grundlagen des Unterrichts mit Python
Python-Grundlagen ①
Grundlagen von Python ①
Algorithmus für maschinelles Lernen (Implementierung einer Klassifizierung mit mehreren Klassen)
Lernen ohne Lehrer 1 Grundlagen
Klassifikation des maschinellen Lernens
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 1
Python & Machine Learning Study Memo ⑤: Klassifikation von Ayame
Klassifizierung von Gitarrenbildern durch maschinelles Lernen Teil 2
Python: Unüberwachtes Lernen: Grundlagen
Maschinelles Lernen: Betreut --AdaBoost
Typischer Klassifizierungsindex
Deep Learning 1 Übung des Deep Learning
# 4 [Python] Grundlagen der Funktionen
Grundlagen von Netzwerkprogrammen?
Die Gründung der Perceptron-Stiftung
Grundlagen der Regressionsanalyse
Python: Überwachtes Lernen (Rückkehr)
Grundlagen von Python: Ausgabe
Techniken im Zusammenhang mit maschinellem Lernen / Klassifizierung
Maschinelles Lernen: Überwacht - Lineare Regression
Python: Überwachtes Lernen: Hyperparameter Teil 1
Stärkung des Lernens 2 Installation von Chainerrl
Deep Running 2 Tuning von Deep Learning
Andere Anwendungen des Wörterbuchlernens
Versuchen Sie, die Leistung des Modells für maschinelles Lernen / Klassifizierung zu bewerten
Überwachtes Lernen 3 Hyperparameter und Abstimmung (2)
Maschinelles Lernen: Überwacht - Zufälliger Wald
Python: Überwachtes Lernen: Hyperparameter Teil 2
Lernen mit dem Lehrer (Rückkehr) 2 Advanced Edition
Bedeutung von Datensätzen für maschinelles Lernen
Maschinelles Lernen: Überwacht - Support Vector Machine
XPath-Grundlagen (1) - Grundkonzept von XPath
Erster Monat des Programmierlernens
Tiefes Lernen der Verstärkung 2 Implementierung des Lernens der Verstärkung
Python x GIS-Grundlagen (1)
Überwachtes Lernen 2 Hyperparameter und Abstimmung (1)
Maschinelles Lernen: Überwacht - Entscheidungsbaum
Einführung in die Python-Grundlagen des maschinellen Lernens (unbeaufsichtigtes Lernen / Hauptanalyse)
[Viererbande] Designmuster lernen
Python x GIS-Grundlagen (3)
Überwachte Klassifizierung von Wort-zu-Wort-Beziehungen mit Word2Vec
Paiza Python Primer 5: Grundlagen von Wörterbüchern
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Erste Schritte mit Python Grundlagen von Python
Maschinelles Lernen ③ Zusammenfassung des Entscheidungsbaums
Klassifikation und Regression beim maschinellen Lernen
[Muss für Anfänger] Grundlagen von Linux
Themenextraktion von japanischem Text 1 Grundlagen
Überprüfung der Grundlagen von Python (FizzBuzz)