[PYTHON] Fordern Sie die Kaggle Titanic heraus

Dieser Beitrag

Ein Memo, das Kaggle herausforderte, die Datenanalyse zu studieren. Ich habe das Tutorial "titanic" ausprobiert, aber es gibt zu viele Dinge, die ich nicht verstehe, wie Pandas und Scikit. Ich dachte, ich könnte den folgenden Code verwenden, aber die Punktzahl ist nicht gut.

Problem

Das Problem darüber nachzudenken, wer die Titanic-Crew überlebt hat (grob erklärt, ohne Angst vor Missverständnissen zu haben). Es werden Zugdaten und Testdaten angegeben, die beide Daten wie Geschlecht und Alter enthalten. Obwohl die Zugdaten Überlebensdaten (0/1) enthalten, sind dies bei den Testdaten nicht der Fall. *** Mit anderen Worten, das Problem, ein Überlebensmodell aus Zugdaten zu erstellen und das Überleben von Testdaten vorherzusagen. *** (Die Richtigkeit kann durch Übermittlung der Prognosedaten auf der Website bestätigt werden.)

Code

#Vorbereitung
def df_cleaner(df):
    #Machen Sie die fehlenden Teile wieder gut
    #Alter
    median_age = np.median(df[(df['Age'].notnull())]['Age'])
    for passenger in df[(df['Age'].isnull())].index: #.index =Nullposition im Array
    	df.loc[passenger, 'Age'] = median_age
    # fare
    median_fare = np.median(df[(df['Fare'].notnull())]['Fare'])
    for passenger in df[(df['Fare'].isnull())].index:
        df.loc[passenger, 'Fare'] = median_fare

    #Konvertieren Sie Zeichenkettendaten in numerische Daten
    df.loc[(df['Sex'] == 'male'),'Sex'] = 0
    df.loc[(df['Sex'] == 'female'),'Sex'] = 1
    df.loc[(df['Sex'].isnull()),'Sex'] = 2
    df.loc[(df['Embarked'] == 'S'),'Embarked'] = 0
    df.loc[(df['Embarked'] == 'C'),'Embarked'] = 1
    df.loc[(df['Embarked'] == 'Q'),'Embarked'] = 2
    df.loc[(df['Embarked'].isnull()),'Embarked'] = 3

    return df

#Lassen Sie uns eine CSV für die Einreichung machen
def make_csv(file_path, passengerId, predicts):
    f = open(file_path, "wb")
    writer = csv.writer(f)
    writer.writerow(["PassengerId", "Survived"])
    for row, survived in zip(passengerId, predicts):
        writer.writerow([row, survived])

#Lassen Sie uns die Leistung des von uns erstellten Modells überprüfen
def getScore(answer, predicts):
    sum_p = 0.0
    total = 0.0
    for (row, predict) in zip(answer,predicts):
        if row == predict:
            sum_p += 1.0
        total += 1.0
    return sum_p/total

def main():
    # Read in the training data.
    train = pd.read_csv('./data/train.csv')
    test = pd.read_csv("./data/test.csv")
    #Unnötige Daten(Erwartet)Lass uns löschen
    train.drop(['Name', 'PassengerId', 'Ticket', 'Cabin'], axis=1, inplace=True)
    test.drop(['Name', 'Ticket', 'Cabin'], axis=1, inplace=True)

    #Bereiten
    train = df_cleaner(train)
    test = df_cleaner(test)
    x_train = train[:][['Pclass', 'Sex','Age', 'SibSp', 'Parch', 'Fare', 'Embarked']]
    y_train = train[:][['Survived']]
    #Lassen Sie uns ein Modell in einem zufälligen Wald erstellen
    scores =[]
    for trees in range(1,100):
        model = RandomForestClassifier(n_estimators=trees)
        model.fit(x_train, np.ravel(y_train))
        #Lassen Sie uns die Übereinstimmungsrate sehen
        pre = model.predict(x_train)
        scores.append(getScore(y_train['Survived'],pre))
    plt.plot(scores,'-r')
    plt.show()
    
    #Erstellen Sie die tatsächlichen Testdaten neu
    x_test = test[:][['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']]
    label = test[:][['PassengerId']]
    #Lassen Sie uns anhand des Modells vorhersagen
    output = model.predict(x_test)
    #Lassen Sie uns eine CSV für die Einreichung machen
    make_csv("./output/random_forest.csv", label['PassengerId'], output.astype(int))

if __name__ == '__main__':
    main()

github Quellcode

Ergebnis

Code oben: 0,75120 Kopieren und Einfügen des Tutorials: 0.76555

Impressionen

Das Original ist schlimmer. .. .. Ich denke nicht, dass es als Algorithmus falsch ist, daher scheint es notwendig, den zufälligen Waldteil von Scikit etwas genauer zu untersuchen.

Ein anderer Fall

Ich habe eine Seite erstellt, um den Algorithmus zu visualisieren und zu verstehen. Es gibt kein Problem mit der Titanic, aber das Problem mit San Francisco hängt zusammen, also werde ich es veröffentlichen. Bibliothek von Algorithmen: Eine Site, die Algorithmen visuell versteht

Recommended Posts

Fordern Sie die Kaggle Titanic heraus
RECRUIT Challenge @ kaggle
Herausforderung Kaggle [Hauspreise]
Kaggle Tutorial Titanic Genauigkeit 80,9% (Top 7% 0,80861)
[Für Kaggle-Anfänger] Titanic (LightGBM)
Wählen Sie Modelle von Kaggles Titanic (kaggle ④)
Vorhersage der Titanic von Kaggle mit Keras (kaggle ⑦)
[Kaggle für Super-Anfänger] Titanic (Logistic Return)
Überprüfen Sie die Rohdaten mit Kaggles Titanic (kaggle ⑥)
Herausforderungen des Titanic-Wettbewerbs für Kaggle-Anfänger
Ich habe versucht, mit Kaggles Titanic (kaggle②) zu lernen.
Überprüfen Sie die Korrelation mit Kaggles Titanic (kaggle③)
Fordern Sie AtCoder heraus
Probieren Sie alle Modelle des Scikit-Lernens mit Kaggles Titanic (kaggle ⑤) aus.
Können Sie Kaggle nur mit Ihrem iPad herausfordern?
Studenten der Kommunalverwaltung fordern Kaggle (Denkmal) heraus
Tag 66 [Einführung in Kaggle] Die einfachste Titanic-Vorhersage
Grundlegende Visualisierungstechniken, die aus Kaggle Titanic-Daten gelernt wurden