[PYTHON] Maschinelles Lernen von Grund auf neu (maschinelles Lernen mit Kaggle)

Zielgruppe und Zweck dieser Seite

Zielgruppe

・ Diejenigen, die die Grundzüge des maschinellen Lernens kennen ・ Oder für diejenigen, die [Maschinelles Lernen von Grund auf neu (Überblick über maschinelles Lernen)] lesen (http://qiita.com/taki_tflare/items/42a40119d3d8e622edd2)

Zweck

・ Kaggle verstehen ・ Verstehen Sie den tatsächlichen Ablauf des maschinellen Lernens ・ Üben Sie mit Kaggles Tutorial ・ Übe mit Scicit-Learn

Agenda

  1. Was ist Kaggle?
  2. Warum Kaggle?
  3. Kaggle Tutorial (Titanic: Maschinelles Lernen aus einer Katastrophe)
  4. Welches soll in den Daten verwendet werden?
  5. Datenvorverarbeitung
  6. Nutzungsdaten
  7. Lernmethode zu verwenden
  8. Ausführung und Gegenüberstellung lernen
  9. Optimierung
  10. Maschineller Lernablauf
  11. Einführung einiger Unternehmenswettbewerbe

Diese Seite ist eine überarbeitete Version der Präsentation. Wenn Sie die Originalpräsentation sehen möchten, klicken Sie bitte hier. https://www.edocr.com/v/vlzyelxe/tflare/Kaggle_-Machine-learning-to-learn-at-Kaggle

1. Was ist Kaggle?

Wenn Sie es ohne Angst vor Missverständnissen zusammenstellen "Kaggle ist eine Website, auf der Unternehmen und Forscher datenwissenschaftliche und maschinelle Lernthemen lösen können. Einige von ihnen haben Preise (und der Code zu ihrer Lösung wird veröffentlicht und erklärt. Erläuterung) Es gibt auch eine Funktion zur Kommunikation mit Kommentaren usw.)

2. Warum Kaggle?

・ In Erklärungen wie Büchern werden häufig Datensätze zur Erklärung verwendet, und es ist schwierig, ein echtes Gefühl zu bekommen. ・ Sie können den tatsächlichen Ablauf des maschinellen Lernens verstehen, da es notwendig ist, auch die Teile auszuführen, die in den Erklärungen defekt sind, wie z. B. Bücher. ・ Weil das Ranking herauskommt, werde ich motiviert. (Sie können mit Datenanalysten auf der ganzen Welt konkurrieren und mit ihnen zusammenarbeiten.) ・ Sie erhalten einen Preis (einige geben Ihnen einen Preis von 1,5 Millionen Dollar)

3. Kaggle Tutorial (Titanic: Maschinelles Lernen aus einer Katastrophe)

Sagen Sie voraus, ob die Passagiere den Untergang der Titanic überlebt haben ・ Trainingsdaten (891 Zeilen x 12 Spalten csv) Einige Daten fehlen ・ Testdaten (418 Zeilen x 11 Spalten csv) Einige Daten fehlen ・ Lernen Sie aus den Trainingsdaten und sagen Sie anhand der Testdaten voraus, ob Sie überlebt haben oder nicht.

4. Welches soll in den Daten verwendet werden?

-PassengerId: Die Nummer, die nacheinander an die Daten angehängt wird ・ Überlebt: Überleben (0 = Nein, 1 = Ja) Existiert nur in Trainingsdaten ・ Klasse: Ticketklasse (1 = 1., 2 = 2., 3 = 3.) · Name Name ・ Geschlecht: Geschlecht ・ Alter: Alter ・ SibSp: Anzahl der Brüder und Ehepartner auf der Titanic ・ Parch: Anzahl der Eltern und Kinder auf der Titanic ・ Ticket: Ticketnummer ・ Tarif: Passagiertarif ・ Kabine: Kabinennummer ・ Eingeschifft: Boarding-Bereich (C = Cherbourg, Q = Queenstown, S = Southampton)

Ausführungscode


import numpy as np
import pandas as pd
train = pd.read_csv("train.csv", dtype={"Age": np.float64}, )
test  = pd.read_csv("test.csv", dtype={"Age": np.float64}, )
train.head(10)

kaggle_titanic1.png

Ausführungscode


train_corr = train.corr()
train_corr

kaggle_titanic3.png

5. Datenvorverarbeitung

Es scheint, dass Sie andere als PassengerId verwenden können. Da es Daten gibt, die derzeit nicht für die Analyse verwendet werden, werden sie in verwendbare Daten konvertiert (numerischer Wert). Außerdem fehlen Daten. Korrigieren Sie diese.

Ausführungscode


def correct_data(titanic_data):
    
    titanic_data.Age = titanic_data.Age.fillna(titanic_data.Age.median())
    
    titanic_data.Sex = titanic_data.Sex.replace(['male', 'female'], [0, 1])
    
    titanic_data.Embarked = titanic_data.Embarked.fillna("S")
    titanic_data.Embarked = titanic_data.Embarked.replace(['C', 'S', 'Q'], [0, 1, 2])

    titanic_data.Fare = titanic_data.Fare.fillna(titanic_data.Fare.median())
   
    return titanic_data

train_data = correct_data(train)
test_data  = correct_data(test)

Ausführungscode


train_corr = train.corr()
train_corr

kaggle_titanic.png

6. Nutzungsdaten

Dieses Mal werden wir die folgenden Elemente verwenden. ・ Ticketklasse ·Sex ·Alter ・ Anzahl der Brüder und Ehepartner auf der Titanic ・ Anzahl der Eltern und Kinder auf der Titanic ・ Passagiertarif · Einstiegsbereich

7. Lernmethode zu verwenden

・ Logistische Rendite ・ Vektormaschine unterstützen ・ K-nächste Methode · Entscheidungsbaum ・ Zufälliger Wald ·neurales Netzwerk

Verweise Einzelheiten zu den Lernmethoden finden Sie weiter unten. Maschinelles Lernen begann mit Python-Funktionen, die mit scikit-learn gelernt wurden. Grundlagen des Ingenieurwesens und des maschinellen Lernens https://www.oreilly.co.jp/books/9784873117980/

8. Ausführung und Gegenüberstellung lernen

Geben Sie die Daten und die Lernmethode an.

Ausführungscode


from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC, LinearSVC
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from sklearn.neural_network import MLPClassifier

from sklearn.model_selection import cross_val_score

predictors = ["Pclass", "Sex", "Age", "SibSp", "Parch", "Fare", "Embarked"]

models = []

models.append(("LogisticRegression",LogisticRegression()))
models.append(("SVC",SVC()))
models.append(("LinearSVC",LinearSVC()))
models.append(("KNeighbors",KNeighborsClassifier()))
models.append(("DecisionTree",DecisionTreeClassifier()))
models.append(("RandomForest",RandomForestClassifier()))
models.append(("MLPClassifier",MLPClassifier(solver='lbfgs', random_state=0)))

Wir werden eine Gegenprüfung durchführen.

Bei der Kreuzvalidierung wird der Datensatz in Trainingsdaten und Testdaten unterteilt (hier 3 Abteilungen). Es ist eine Methode, um die Genauigkeit durch Auswertung zu stabilisieren

一から始める機械学習(Kaggleで学ぶ機械学習)__Machine_learning_to_learn_at_Kaggle_key.png

Ausführungscode


results = []
names = []
for name,model in models:
    result = cross_val_score(model, train_data[predictors], train_data["Survived"],  cv=3)
    names.append(name)
    results.append(result)
    

Das in 3 geteilte Ergebnis wird gemittelt und ausgewertet. Zufälliger Wald ergab gute Ergebnisse.

Ausführungscode


for i in range(len(names)):
    print(names[i],results[i].mean())
    
LogisticRegression 0.785634118967
SVC 0.687991021324
LinearSVC 0.58810325477
KNeighbors 0.701459034792
DecisionTree 0.766554433221
RandomForest 0.796857463524
MLPClassifier 0.785634118967

Basierend auf dem, was Sie in Random Forest gelernt haben Mit Testdaten vorhersagen und das Ergebnis als CSV senden.

Ausführungscode


alg = RandomForestClassifier()
alg.fit(train_data[predictors], train_data["Survived"])

predictions = alg.predict(test_data[predictors])

submission = pd.DataFrame({
        "PassengerId": test_data["PassengerId"],
        "Survived": predictions
    })

submission.to_csv('submission.csv', index=False)
    

9. Optimierung

Richtige Antwortrate

Richtige Antwortrate 0,74163 Es war 7043. von 7922 Menschen. Ich bin ein wenig enttäuscht, also werde ich es optimieren.

Optimierung

Wenn Sie die Rastersuche verwenden, werden Hyperparameter automatisch optimiert. Bitte beachten Sie jedoch, dass die Ausführung lange dauert.

Ausführungscode


parameters = {
        'n_estimators'      : [5, 10, 20, 30, 50, 100, 300],
        'max_depth'         : [3, 5, 10, 15, 20, 25, 30, 40, 50, 100]
        'random_state'      : [0],
}
gsc = GridSearchCV(RandomForestClassifier(), parameters,cv=3)
gsc.fit(train_data[predictors], train_data["Survived"])

Wenden wir das oben optimierte Ergebnis an.

Richtige Antwortrate 0,77990 Ich ging von 7922 Leuten auf den 4129. Platz.

Titanic__Machine_Learning_from_Disaster___Kaggle.png

Optimierung durch Änderung der Datenvorverarbeitung

Ich habe einen Kommentar erhalten, als ich den Code für Kaggle veröffentlicht habe. Er sagte, es sei besser, die fehlenden Werte aus den Testdaten anstelle der Trainingsdaten zu erhalten. Ich versuchte es. Der geänderte Code wird unten angezeigt.

Ausführungscode


def correct_data(train_data, test_data):
    
    # Make missing values ​​for training data from test data as well
    train_data.Age = train_data.Age.fillna(test_data.Age.median())
    train_data.Fare = train_data.Fare.fillna(test_data.Fare.median())
    
    test_data.Age = test_data.Age.fillna(test_data.Age.median())
    test_data.Fare = test_data.Fare.fillna(test_data.Fare.median())    
    
    train_data = correct_data_common(train_data)
    test_data = correct_data_common(test_data)    

    return train_data,  test_data

def correct_data_common(titanic_data):
    titanic_data.Sex = titanic_data.Sex.replace(['male', 'female'], [0, 1])
    titanic_data.Embarked = titanic_data.Embarked.fillna("S")
    titanic_data.Embarked = titanic_data.Embarked.replace(['C', 'S', 'Q'], [0, 1, 2])
    
    return titanic_data

train_data,  test_data = correct_data(train, test)

** Richtige Antwortrate 0,79426 ** ** Ich ging auf 2189. von 7922 Personen. ** **.

Titanic__Machine_Learning_from_Disaster___Kaggle2.png

Planen Sie weitere Optimierungen ein

・ Analysieren Sie den Namen. (Können Sie von hier aus raten, weil es Mr. Mrs. Miss usw. gibt?)

kaggle_titanic1.png

· Verwenden Sie eine andere Lernmethode (z. B. XGBoost, LightGBM).

10. Maschineller Lernablauf

一から始める機械学習(Kaggleで学ぶ機械学習)__Machine_learning_to_learn_at_Kaggle_key2.png

Die Methodenauswahl ist ein Algorithmus-Spickzettel

Choosing_the_right_estimator_—_scikit-learn_0_19_0_documentation.png

Hyper-Parameterauswahl

grid search

Modellbewertung

** Gegenüberstellung **

11. Einführung einiger Unternehmenswettbewerbe

Prudential Life Insurance Assessment ・ Können Sie den Kauf einer Lebensversicherung erleichtern? ・ Berechnen Sie das Risiko aus den Attributen des Lebensversicherungsantragstellers ・ Preis von 30.000 Dollar ・ Bereits fertig (Code kann referenziert werden) ・ Https://www.kaggle.com/c/prudential-life-insurance-assessment

Zillow Prize: Zillow’s Home Value Prediction (Zestimate) ・ Können Sie den Algorithmus verbessern, der die Immobilienwelt verändert hat? · Prognostizieren Sie den Fehler zwischen Zestimate und dem tatsächlichen Verkaufspreis unter Berücksichtigung aller Merkmale Ihres Hauses ・ Preis von 1,2 Millionen Dollar ・ Endet nach 4 Monaten ・ Https://www.kaggle.com/c/zillow-prize-1

Recommended Posts

Maschinelles Lernen von Grund auf neu (maschinelles Lernen mit Kaggle)
Maschinelles Lernen mit Pokemon gelernt
Versuchen Sie es mit Kaggle leicht maschinell
Erstellen Sie mit Winsows 10 eine maschinelle Lernumgebung von Grund auf neu
Geschäftseffizienz von Grund auf mit Python
Micro Service mit GCP auf RoR von Grund auf neu
Maschinelles Lernen beginnend mit Python Personal Memorandum Part2
Deep Learning von Grund auf neu
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 1
Maschinelles Lernen beginnend mit Python Personal Memorandum Part1
Überblick über maschinelle Lerntechniken, die aus Scikit-Learn gelernt wurden
Maschinelles Lernen ab 0 für theoretische Physikstudenten # 2
Deep Learning von Grund auf neu Die Theorie und Implementierung des mit Python erlernten Deep Learning Kapitel 3
Deep Learning Bildanalyse beginnend mit Kaggle und Keras
Lernmethode zum Lernen von maschinellem Lernen von Grund auf neu (Version März 2020)
Deep Learning von Grund auf 1-3 Kapitel
Django von vorne anfangen (Teil: 2)
Django von vorne anfangen (Teil: 1)
Verbessertes Lernen ab Python
Maschinelles Lernen mit Python! Vorbereitung
Maschinelles Lernen Minesweeper mit PyTorch
Beginnend mit maschinellem Python-Lernen
Erstellen Sie mit Docker eine Umgebung für "Deep Learning von Grund auf neu"
[Maschinelles Lernen] Unkorrelation aus der Mathematik verstehen
Ich habe maschinelles Lernen mit liblinear versucht
Maschinelles Lernen mit Python (1) Gesamtklassifizierung
Tiefes Lernen von Grund auf neu (Kostenberechnung)
Perceptron-Lernexperiment mit Python
SVM versucht maschinelles Lernen mit Scikit-Learn
Deep Learning Memo von Grund auf neu gemacht
Quanteninspiriertes maschinelles Lernen mit Tensornetzwerken
Beginnen Sie mit dem maschinellen Lernen mit SageMaker
"Scraping & maschinelles Lernen mit Python" Lernnotiz
Re: Heroku Leben von Grund auf neu mit Flask ~ PhantomJS bis Heroku ~
Lassen Sie Code Day75 von vorne beginnen "15.3 Sum"
Vorhersage des Strombedarfs durch maschinelles Lernen Teil 2
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 7]
Verstärken Sie Bilder für maschinelles Lernen mit Python
Tiefes Lernen von Grund auf neu (Vorwärtsausbreitung)
Unausgeglichenes Datenlernen mit maschinellem Lernen k-NN
Verwenden Sie die API-Gruppe A3RT für maschinelles Lernen aus Python
Maschinelles Lernen mit Python (2) Einfache Regressionsanalyse
Re: Heroku Leben von vorne anfangen mit Flask ~ Selenium & PhantomJS & Beautifulsoup ~
Tiefes Lernen / Tiefes Lernen von Grund auf 2-Versuchen Sie, GRU zu bewegen
Deep Learning / Deep Learning von Grund auf neu Kapitel 6 Memo
Ich habe versucht, mit Kaggles Titanic (kaggle②) zu lernen.
Realisieren Sie mit Docker und Vagrant die Umgebungskonstruktion für "Deep Learning von Grund auf neu"
Eine Geschichte über maschinelles Lernen mit Kyasuket
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 5]
Lassen Sie Code Day 29 "46. Permutationen" von vorne beginnen
[Lernnotiz] Deep Learning von Grund auf neu gemacht [Kapitel 6]
Maschinelles Lernen
[Shakyo] Begegnung mit Python zum maschinellen Lernen
Quellcode für die Trennung von Tonquellen (Übungsreihe zum maschinellen Lernen), der mit Python gelernt wurde
[Python] Erste Datenanalyse / maschinelles Lernen (Kaggle)