Aidemy 2020/10/31
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 dritte Beitrag von "Data Analysis Titanic". Freut mich, dich kennenzulernen.
- Dieser Artikel ist eine Zusammenfassung dessen, was Sie in "Aidemy" "in Ihren eigenen Worten" gelernt haben. Es kann Fehler und Missverständnisse enthalten. Bitte beachten Sie.
Was diesmal zu lernen
・ ⑤ Problemmodellierung, Vorhersage und Lösung
Modell erstellen
Auswahl des zu verwendenden Algorithmus
- Da die Datenverarbeitung in Kapitel 2 abgeschlossen ist, werden die Daten von nun an tatsächlich an das __- Modell übergeben, um eine Vorhersage zu treffen, und der Vorgang wird durchgeführt, bis sie aufgelöst sind.
- Zunächst muss entschieden werden, __ welcher Algorithmus zum Erstellen des Modells verwendet werden soll. Das Vorhersageproblem enthält __ "Klassifizierung" und "Rückgabe" __. Ersteres unterteilt die Daten in Klassen und sagt voraus, zu welcher "Klasse" die übergebenen Daten gehören, und letzteres ist der "Wert" der Daten. Ist vorherzusagen.
-Das Vorhersageproblem dieses Titanic-Problems besteht darin, zu "klassifizieren", ob __Survived 0 oder 1 ist. Der zu verwendende Algorithmus erstellt ein Modell mit __ "logistischer Regression" "SVC" "k-NN" "Entscheidungsbaum" "Zufallswald" __.
Datenaufbereitung
- Bereiten Sie __ "X_train" "y_train" "X_test" __ vor, das an das Modell übergeben werden soll. Normalerweise verwende ich __train_test_split () __ in sklearn.model_serection, aber dieses Mal habe ich es selbst aufgeteilt .
-Für X_train ersetzen Sie train_df außer Survived, für y_train, ersetzen Sie train_df nur durch Survived und ersetzen Sie für X_test test_df außer __PassengerId.
・ Code![Screenshot 2020-10-24 18.32.01.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/57f40d79-e73c-3912- e3be-ea8389d5e6fb.png)
Logistische Rückgabe
・ (Überprüfung) __Logistische Regression __ verwendet die Sigmoidfunktion __, um Binärwerte zu klassifizieren. Die Sigmoid-Funktion ist eine Funktion __, die einen Wert zwischen __0 und 1 annimmt. Erstellen Sie ein Modell mit __LogidticRegression () __.
-
Sagen Sie diesmal anhand der erklärenden Variablen Age und Pclass voraus, ob die Zielvariable __Survived 0 oder 1 ist.
-
Auch für die Daten, die nur für die logistische Regression an das Modell übergeben werden sollen, werden __X_train und Y_train im Verhältnis 8: 2 __ weiter in Trainingsdaten und Testdaten unterteilt.
-Code (einschließlich Ergebnisse)![Screenshot 2020-10-24 19.03.30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/79db1564 -18c1-c397-80b0-e236333cad58.png)
Visualisieren Sie, welche erklärenden Variablen (Merkmale) die Ergebnisse wahrscheinlich beeinflussen
-__ Um zu wissen, "welche erklärende Variable (Merkmalsmenge) das Ergebnis wahrscheinlich beeinflusst" _, berechnen Sie den __ partiellen Regressionskoeffizienten __ zwischen der Zielvariablen und der erklärenden Variablen. Man kann sagen, dass es umso einfacher ist, das Ergebnis zu beeinflussen, je größer der Wert ist.
-Berechnen Sie den partiellen Regressionskoeffizienten mit __ "model.corf" __. Da ich es in DataFrame behandeln möchte, erstelle ich einen DataFrame mit Spalten von train_df in der Zeile ("Feature"), erstelle einen "partiellen Regressionskoeffizienten" als neue Spalte und speichere dort den partiellen Regressionskoeffizienten.
- Der Grund, warum beim Erstellen eines DataFrame delete (0) festgelegt wird, besteht darin, dass die Berechnung nicht durchgeführt werden kann und NaN wird, wenn bei der Berechnung des partiellen Regressionskoeffizienten 0 angezeigt wird.
・ Code![Screenshot 2020-10-24 19.25.54.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/1cd46828-9fcd-bec9- 0851-275745c732b3.png)
・ Ergebnis![Screenshot 2020-10-24 19.26.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/efd82e96-a574-36ea- 80ac-2bc177a5ed6f.png)
SVM
- (Überprüfung) __ Support Vector Machine (SVM) __ Klassifizierungsalgorithmus. Da die Klassifizierungsgrenze so gezeichnet ist, dass sie am weitesten von anderen Klassen entfernt ist, kann sie leicht verallgemeinert werden __. Da es durch die Kernel-Methode __ von nichtlinear in linear konvertiert wird, kann es __ nichtlineare Daten __ verarbeiten. Lineare SVM wird in __LinearSVC () __ und nichtlineare SVM in __SVC () __ verwendet.
・ Code (Wenn Sie LinearSVC auf die gleiche Weise erstellen, ist dies in Ordnung. Dieses Ergebnis ist "83,84".)
k-NN
- (Review) k-NN ist ein Algorithmus, der k Lehrerdaten ähnlich wie prediction data extrahiert und die häufigste Klasse als Vorhersageergebnis ausgibt. Das Merkmal ist, dass die Lernkosten 0__ und die Vorhersagegenauigkeit hoch __ sind. Es kann mit __KNeighborsClassifier () __ verwendet werden, und die Anzahl der zu extrahierenden Daten k kann durch Angabe von __ "n_neighbors" __ als Argument festgelegt werden.
・ Code![Screenshot 2020-10-24 19.56.44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/04b20121-5e79-cf72- 9d79-4d5c9ce7018d.png)
Entscheidungsbaum
- (Review) Decision tree wird wie folgt benannt, da die aus den Daten extrahierten Regeln durch eine Baumstruktur dargestellt werden. Die Regel ist zum Beispiel, dass wenn die erklärende Variable Alter 1 (16 bis 32 Jahre alt) ist, sie für Pclass beurteilt wird. Mit diesen Fortschritten können die Klassen endgültig klassifiziert werden. Kann mit __DecisionTreeClassifier () __ verwendet werden.
Zufälliger Wald
- (Review) __Random Forest __ ist ein Algorithmus, der eine große Anzahl von Entscheidungsbäumen __ erstellt und die größte Anzahl jedes Ergebnisses als Endergebnis ausgibt. Das Lernen mit mehreren Klassifikatoren wie diesem wird __ensemble learning __ genannt. Es kann mit __RandomForestClassifier () __ verwendet werden, und die Anzahl der ermittelten Bäume kann durch Angabe von __ "n_estimators" __ als Argument bestimmt werden.
Modellbewertung
- Bestimmen Sie, welches Modell verwendet werden soll, indem Sie die Genauigkeit (acc) __ jedes oben in DataFrame erstellten __ Modells auflisten.
・ Code![Screenshot 2020-10-24 21.52.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/5140731d-b25a-73c6- 2b77-0780d617f121.png)
・ Ergebnis![Screenshot 2020-10-24 22.10.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/698700/c7ac0fac-5ba4-f9e3- 3939-cc0a12fe92c1.png)
Modell speichern
- Wie aus den Ergebnissen im vorherigen Abschnitt hervorgeht, wurde festgestellt, dass die Genauigkeit des Modells unter Verwendung des Bestimmungsbaums und des zufälligen Waldes am höchsten ist. Dieses Mal habe ich beschlossen, das __random-Gesamtstrukturmodell zu verwenden, das allgemeiner zu sein scheint, und dieses Modell als CSV-Datei zu speichern.
-Exportieren und Speichern von CSV-Dateien kann mit __ "to_csv" __ erfolgen. Erstellen Sie in der Datei eine Datei als DataFrame mit einer Spalte, in der die PassengerId von test_df als "PassengerId" und eine Spalte, in der das Vorhersageergebnis "Y_pred" der zufälligen Gesamtstruktur (Entscheidungsbaum) als "Survivived" gespeichert ist.
・ Code (Dateipfad ist fiktiv)
Zusammenfassung
- Teilen Sie die bis zum letzten Mal erstellten Daten in train_X, train_y, test_X __ auf. Erstellen Sie mit diesen Daten ein Modell.
- Um zu wissen, "welche erklärende Variable (Merkmalsmenge) das Ergebnis beeinflusst" __, ist es besser, den partiellen Regressionskoeffizienten zu berechnen und zu visualisieren.
- Vergleichen Sie anhand der Punktzahl jedes Modells, welches Modell die höchste __Akgenauigkeit (acc) __ aufweist, und speichern Sie das Modell mit der höchsten save in einer CSV-Datei.
Diese Zeit ist vorbei. Vielen Dank für das Lesen bis zum Ende.