・ 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)
・ Kaggle verstehen ・ Verstehen Sie den tatsächlichen Ablauf des maschinellen Lernens ・ Üben Sie mit Kaggles Tutorial ・ Übe mit Scicit-Learn
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
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.)
・ 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)
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.
-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)
Ausführungscode
train_corr = train.corr()
train_corr
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
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
・ 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/
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)))
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
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)
Richtige Antwortrate 0,74163 Es war 7043. von 7922 Menschen. Ich bin ein wenig enttäuscht, also werde ich es optimieren.
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.
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. ** **.
・ Analysieren Sie den Namen. (Können Sie von hier aus raten, weil es Mr. Mrs. Miss usw. gibt?)
· Verwenden Sie eine andere Lernmethode (z. B. XGBoost, LightGBM).
grid search
** Gegenüberstellung **
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