Da ich einen Artikel als Ergebnis einer Studie schreibe, kann es einige Fehler geben. Fühlen Sie sich also frei zu kommentieren, zu kommentieren und darauf hinzuweisen. Dieses Mal schrieb ich über Regression in Python Predictive Statistics (Practice Edition Simple Regression), aber ich werde über Klassifizierung schreiben.
・ Super Überblick über maschinelles Lernen ・ Überprüfung der Klassifizierung ・ Modellierungsfluss · Trainieren
Bevor wir über die Klassifizierung schreiben, werfen wir einen kurzen Blick auf das maschinelle Lernen. Maschinelles Lernen besteht darin, Muster aus früheren Daten zu lernen und vorherzusagen. Es wird heute auf der ganzen Welt verwendet, da es eine höhere Vorhersagegenauigkeit als die Analyse menschlicher Daten aufweist. Maschinelles Lernen erfordert viele Parameter (in der Welt des maschinellen Lernens als Hyperparameter bezeichnet), und die Anzahl kann Zehntausende betragen. Wenn Sie diesen Parameter verwenden, tritt außerdem ein Überlernen auf, wenn unnötige Parameter vorhanden sind, sodass eine Anpassung erforderlich ist. Die folgenden beiden sind für das Studium des maschinellen Lernens unverzichtbar. ・ Mit dem Lehrer lernen ・ Lernen ohne Lehrer
Überwachtes Lernen ist eine Methode, bei der die von Ihnen eingegebenen Daten die richtige Antwort sind. Sie geben die Daten tatsächlich ein und der Computer sagt zukünftige Daten basierend auf diesen Daten voraus. Das Bild ist, dass der Lehrer den Schülern das Lernen beibringt.
Unbeaufsichtigtes Lernen sagt Daten voraus, ohne die tatsächlich korrekten Daten einzugeben. Da dies eine Methode ist, um die Essenz von Daten herauszufinden, und es keine richtige Antwort gibt, kann die Vorhersagegenauigkeit nicht gemessen werden. Das Bild ist wie ein Student auf Jobsuche, der nicht findet, was er tun möchte.
In dieser Praxis haben wir beim Lernen mit einem Lehrer eine Methode angewendet, die als Entscheidungsbaum bezeichnet wird.
Wie ich im vorherigen Artikel geschrieben habe, ist die Klassifizierung in Kategorien unterteilt. Teilen Sie den Hund beispielsweise in Daxfund und Chiwawa oder teilen Sie den Kuchen in kurze Kuchen und Schokoladenkuchen. Wenn die in dieser Klassifizierung verwendete Methode das Lernen überwacht und die Hunde klassifiziert werden, geben Sie zuerst die Merkmale (Parameter) von Daxfund und Chiwawa ein. Wenn der Körper lang ist, geben Sie Dax ein, oder wenn die Augen rund sind, geben Sie Chiwawa ein und lassen Sie den Computer beurteilen. Wenn es viele Parameter gibt, erhöht sich natürlich die Klassifizierungsgenauigkeit, aber wenn es zu viele Parameter gibt, wird sie überlernt. Wenn Sie beispielsweise bei Hunden einen Parameter namens Schwanzlänge eingeben, ist es schwierig, die Schwanzlänge zu bestimmen, da es individuelle Unterschiede gibt. Daher ist bei der Entscheidung über die Parameter die Klassifizierungsgenauigkeit höher, wenn sie unabhängig voneinander sind.
Ich werde den Ablauf erklären, um ein Modell zu erstellen. ① Grundlegende Analyse </ b> ・ Daten lesen ・ Bestätigung der Basisstatistik ・ Bestätigung und Korrektur von defektem Land
· Klasseneinteilung ② Erstellen eines Entscheidungsbaummodells </ b> ・ Auswahl und Bestimmung erklärender Variablen ・ Auswahl und Bestimmung von Zielvariablen ・ Erstellen Sie Variablen für das Entscheidungsbaummodell
Ich werde den eigentlichen Code setzen.
① Grundlegende Analyse Importieren wir zunächst die Bibliothek, die zum Erstellen eines Entscheidungsbaummodells erforderlich ist.
import pandas as pd
import numpy as np
from matplotlib import pyplot as plt
%matplotlib inline
from sklearn.tree import DecisionTreeClassifier as DT
from sklearn.tree import export_graphviz
import pydotplus
from IPython.display import Image
Verwenden Sie dann die Pandas-Bibliothek, um die Daten zu laden und die grundlegenden Statistiken nachzuschlagen
train = pd.read_csv("train.csv") #Ersetzung früherer Daten
test = pd.read_csv("test.csv") #Substitution von Prognosedaten
sample = pd.read_csv("submit_sample.csv",header=None)
train.describe() #Bestätigung der Basisstatistik vergangener Daten
test.describe() #Überprüfen Sie auch die Prognosedaten
Als nächstes überprüfen wir den defekten Bereich
train.isnull().sum()
test.isnull().sum()
Als nächstes werden wir Kreuztabellen machen. Eine Kreuztabelle ist eine Tabelle, die die numerische Beziehung zwischen Daten in einer Spalte und Daten in einer anderen Spalte zeigt. Der Code sieht folgendermaßen aus:
#Die Kreuztabellenfunktion kann für die Kreuztabelle verwendet werden. Die Option Ränder gibt auch den Gesamtwert aus
pd.crosstab(train["Spaltenname"],train["Spaltenname"],margins=True)
Als nächstes kommt Binning. Beim Binning wird berechnet, wie viele Zahlen sich in einem bestimmten Abschnitt befinden. Das Bild ist wie die Beziehung zwischen der Klasse des Histogramms und der Frequenz.
#Teilen Sie die Spaltendaten des ersten Arguments durch den numerischen Wert des zweiten Arguments.
bining_data = pd.cut(train["Spaltenname"],[1,10,20,30,50,100])
② Erstellung eines Entscheidungsbaummodells Entscheiden Sie zunächst, welchen Parameter Sie verwenden möchten. Weisen wir diesen Parameter dann einer Variablen zu. Die iloc-Funktion ist praktisch, wenn Sie mehrere Zeilen und mehrere Spalten zuweisen möchten.
#Alle Zeilen und Spalten werden aus der 0. bis 17. Zeile extrahiert.
trainX = train.iloc[:,0:17]
y = train["Objektive Variable"]
#Die Kopierfunktion extrahiert alle Spalten
testX = test.copy()
Als nächstes lassen Sie uns die extrahierten Daten dummy.
trainX = pd.get_dummies(trainX)
testX = pd.get_dummies(testX)
Und bereiten wir die Variablen vor, um das Entscheidungsbaummodell zu erstellen
#Das erste Argument ist die Tiefe des Blattes, das zweite Argument ist der Mindestwert der Stichprobe
clf1 = DT(max_depth=2,min_samples_leaf=500)
Lassen Sie uns frühere Daten ersetzen
#Stellen Sie sicher, dass Sie die erklärende Variable zuweisen
clf1 = clf1.fit(trainX,y)
Als nächstes möchte ich es auf Jupiter anzeigen, aber da es direkt angezeigt werden kann, schreibe ich es in eine Punktdatei und zeige es dann an.
export_graphviz(clf1, out_file="tree.dot", feature_names=trainX.columns, class_names=["0","1"], filled=True, rounded=True)
g = pydotplus.graph_from_dot_file(path="tree.dot")
Image(g.create_png())
Nun, ich werde es endlich vorhersagen. Dieses Mal verwenden wir die Funktion predit_proba </ b> anstelle der Vorhersagefunktion, da es sich eher um eine Klassifizierung als um eine Regression handelt.
pred = clf1.predict_proba(testX)
Damit ist die Analyse anhand der Klassifizierung abgeschlossen. Sie müssen sich nicht an die Anzeige des Entscheidungsbaummodells erinnern, damit Sie es kopieren können. Bitte ändern Sie die Optionen nach Bedarf. Diesmal habe ich das Entscheidungsbaummodell verwendet. Bei Verwendung des Entscheidungsbaummodells werden jedoch die Tiefe der Blätter und der einzustellende Mindestwert wichtig. Es ist wichtig zu beachten, dass je tiefer die Blätter sind, desto wahrscheinlicher ist es, dass sie überlernen. Daher ist es möglich, ein Modell zu erstellen, bei dem es weniger wahrscheinlich ist, dass es durch Optimierung der Parameter übertrainiert wird. Ich werde es im nächsten Artikel noch einmal schreiben.
Recommended Posts