Dies ist die Geschichte der erstmaligen Teilnahme am Kaggle </ b> -Wettbewerb. Führen Sie im vorherigen Abschnitt "Alle Modelle des Scikit-Lernens mit Kaggles Titanic testen" eine "Kreuzvalidierung" für das Modell des Scikit-Lernens durch. Ich konnte die Punktzahl ein wenig erhöhen. Dieses Mal möchte ich "die Rohdaten überprüfen", die zuerst hätten durchgeführt werden sollen.
Geschichte
Ich habe ein Buch mit dem Titel [Die Kraft der Analyse zur Veränderung des Unternehmens] gelesen (https://www.amazon.co.jp/dp/4062882183). In einem der Inhalte des Buches heißt es: "Überprüfen wir die Rohdaten, bevor wir die Daten analysieren." Ausreißer können nicht gefunden werden, ohne die Rohdaten zu betrachten. Bevor Sie mit der Datenanalyse beginnen, visualisieren Sie zunächst die Rohdaten und suchen Sie visuell nach Ausreißern. Es wird gesagt, dass Sie eine solche Gewohnheit erwerben sollten. Überprüfen Sie die Rohdaten, überprüfen Sie sie auf abnormale Werte und überprüfen Sie, wie die Daten erneut verwendet werden.
Dem Ergebnis zufolge stieg die Punktzahl durch Überprüfung der Eingabedaten ein wenig an und wurde zu "0,80382". Das Ergebnis sind die besten 9% (Stand 7. Januar 2020). Ich würde gerne den Ablauf bis zur Einreichung sehen.
Lassen Sie uns einige Rohdaten überprüfen.
Lassen Sie uns für jede Klasse (Ticketklasse) ein Streudiagramm des Tarifs erstellen. Es wurde wie folgt.
Die horizontale Achse ist pclass. Der Tarif von "1" ist tendenziell hoch. Bei der Ticketklasse scheint sich die Note in der Größenordnung von 1> 2> 3 zu verbessern. Aus dem Streudiagramm können Sie ersehen, dass sich der Tarif "0" in jeder Klasse befindet. Schauen wir uns die Rohdaten an. Sortieren nach aufsteigender Reihenfolge des Tarifs (Tarif).
PassengerId | Survived | Pclass | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
180 | 0 | 3 | male | 36 | 0 | 0 | LINE | 0 | S | |
264 | 0 | 1 | male | 40 | 0 | 0 | 112059 | 0 | B94 | S |
272 | 1 | 3 | male | 25 | 0 | 0 | LINE | 0 | S | |
278 | 0 | 2 | male | 0 | 0 | 239853 | 0 | S | ||
303 | 0 | 3 | male | 19 | 0 | 0 | LINE | 0 | S | |
414 | 0 | 2 | male | 0 | 0 | 239853 | 0 | S | ||
467 | 0 | 2 | male | 0 | 0 | 239853 | 0 | S | ||
482 | 0 | 2 | male | 0 | 0 | 239854 | 0 | S | ||
598 | 0 | 3 | male | 49 | 0 | 0 | LINE | 0 | S | |
634 | 0 | 1 | male | 0 | 0 | 112052 | 0 | S | ||
675 | 0 | 2 | male | 0 | 0 | 239856 | 0 | S | ||
733 | 0 | 2 | male | 0 | 0 | 239855 | 0 | S | ||
807 | 0 | 1 | male | 39 | 0 | 0 | 112050 | 0 | A36 | S |
816 | 0 | 1 | male | 0 | 0 | 112058 | 0 | B102 | S | |
823 | 0 | 1 | male | 38 | 0 | 0 | 19972 | 0 | S | |
379 | 0 | 3 | male | 20 | 0 | 0 | 2648 | 4.0125 | C | |
873 | 0 | 1 | male | 33 | 0 | 0 | 695 | 5 | B51 B53 B55 | S |
327 | 0 | 3 | male | 61 | 0 | 0 | 345364 | 6.2375 | S | |
844 | 0 | 3 | male | 34.5 | 0 | 0 | 2683 | 6.4375 | C |
In aufsteigender Reihenfolge des Tarifs ist der Tarif "0" und die PC-Klasse 1, 2 und 3. Der Tarif "0" ist nicht kostenlos und scheint "Gebühr unbekannt" zu bedeuten. Tarif "0" von den Trainingsdaten ausschließen. Wenn Sie Tarif "0" ausschließen und erneut ein Streudiagramm erstellen, sieht es wie folgt aus.
Es ist etwas einfacher zu sehen. Ich bin auch besorgt über den kleinen Punkt der Klasse "1". In der obigen Tabelle gibt es Daten für Tarif "5" mit Klasse "1". Dies kann auch ein Ausreißer sein, also schließen wir es aus.
Es ist eine Streukarte mit einem bestimmten Tarifbereich für jede Klasse.
Ticketnummern sind eine nominelle Skala. Ich werde sie in aufsteigender Reihenfolge der Ticketnummern anordnen.
PassengerId | Survived | Pclass | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked |
---|---|---|---|---|---|---|---|---|---|---|
258 | 1 | 1 | female | 30 | 0 | 0 | 110152 | 86.5 | B77 | S |
505 | 1 | 1 | female | 16 | 0 | 0 | 110152 | 86.5 | B79 | S |
760 | 1 | 1 | female | 33 | 0 | 0 | 110152 | 86.5 | B77 | S |
263 | 0 | 1 | male | 52 | 1 | 1 | 110413 | 79.65 | E67 | S |
559 | 1 | 1 | female | 39 | 1 | 1 | 110413 | 79.65 | E67 | S |
586 | 1 | 1 | female | 18 | 0 | 2 | 110413 | 79.65 | E68 | S |
111 | 0 | 1 | male | 47 | 0 | 0 | 110465 | 52 | C110 | S |
476 | 0 | 1 | male | 0 | 0 | 110465 | 52 | A14 | S | |
431 | 1 | 1 | male | 28 | 0 | 0 | 110564 | 26.55 | C52 | S |
367 | 1 | 1 | female | 60 | 1 | 0 | 110813 | 75.25 | D37 | C |
Wenn Sie sich die Ticketnummer ansehen, können Sie die Regelmäßigkeit nicht lesen, z. B. nur Zahlen oder eine Kombination aus Buchstaben und Zahlen. Sie können auch sehen, dass es Personen mit derselben Ticketnummer gibt. Personen mit derselben Ticketnummer haben häufig denselben Nachnamen, wenn sie sich ihre Namen ansehen. Ich denke, es ist eine Familie. Im Vergleich zu Survived von Personen mit derselben Ticketnummer ist Survived in der Regel mit derselben Ticketnummer identisch. Wir werden eine Richtlinie zur Kennzeichnung nach Ticketnummer in Betracht ziehen. Das Bild unten.
PassengerId | Survived | Ticket | Ticket (Etikett) |
---|---|---|---|
505 | 1 | 110152 | Ticket A. |
258 | 1 | 110152 | Ticket A. |
760 | 1 | 110152 | Ticket A. |
586 | 1 | 110413 | Ticket B. |
559 | 1 | 110413 | Ticket B. |
263 | 0 | 110413 | Ticket B. |
111 | 0 | 110465 | Ticket C. |
476 | 0 | 110465 | Ticket C. |
431 | 1 | 110564 | NaN |
367 | 1 | 110813 | NaN |
Wir möchten die gleichen Ticketnummern gruppieren, daher verwenden wir "NaN" für eindeutige Tickets. Die Tickets A und B können so wie sie sind digitalisiert werden, aber eine One-Hot-Codierung wird verwendet, um deutlich anzuzeigen, dass sie gekennzeichnet sind. Das Bild ist wie folgt. Der Quellcode wird später beschrieben, aber Sie können One-Hot-Codierung mit pandas.get_dummies durchführen.
PassengerId | Survived | Ticket A. | Ticket B. | Ticket C. |
---|---|---|---|---|
505 | 1 | 1 | 0 | 0 |
258 | 1 | 1 | 0 | 0 |
760 | 1 | 1 | 0 | 0 |
586 | 1 | 0 | 1 | 0 |
559 | 1 | 0 | 1 | 0 |
263 | 0 | 0 | 1 | 0 |
111 | 0 | 0 | 0 | 1 |
476 | 0 | 0 | 0 | 1 |
431 | 1 | 0 | 0 | 0 |
367 | 1 | 0 | 0 | 0 |
sibsp und parch haben auch [zuvor] grafisch dargestellt (https://qiita.com/sudominoru/items/840e87cc77de29f10ca2), aber lassen Sie es uns noch einmal grafisch darstellen. Es gab keinen signifikanten Unterschied im Korrelationskoeffizienten, aber das Folgende kann durch Betrachten der Diagramme sowohl für Geschwister als auch für Parch gesehen werden. ・ Wenn sibsp und parch 0 sind, ist Survived mehr als 0 (ungefähr zweimal). · Wenn sibsp, parch 1 oder 2 ist, sind Survived 0s und 1s ungefähr gleich ・ Geschwister und Parch mit 3 oder mehr haben eine kleine Population
Letztes Mal habe ich es aus den Trainingsdaten ausgeschlossen, weil der Korrelationskoeffizient klein ist, aber es scheint, dass 0, 1 und 2 als Etikettendaten verwendet werden können. Wenn sibsp und parch nur für Daten von 3 oder weniger extrahiert werden und der Korrelationskoeffizient bestätigt wird, ist das Ergebnis wie folgt.
#Überprüfen Sie die Anzahl der Kramer-Assoziationen, wenn SibSp kleiner als 3 ist
df_SibSp = df[df['SibSp'] < 3]
cramersV(df_SibSp['Survived'], df_SibSp['SibSp'])
#Überlebt und SibSp(Weniger als 3)Zeigen Sie die Kreuztabelle von an
cross_sibsp = pandas.crosstab(df_SibSp['Survived'], df_SibSp['SibSp'])
cross_sibsp
cross_sibsp.T.plot(kind='bar', stacked=False, width=0.8)
plt.show()
0.16260950922794606
Der Korrelationskoeffizient betrug 0,16, was "schwach korreliert" war. Ich werde es weglassen, aber Parch hat ähnliche Ergebnisse. Versuchen wir also wie bei Ticket die One-Hot-Codierung für SibSp und Parch. Das Bild ist wie folgt.
PassengerId | Survived | SibSp_1 | SibSp_2 | SibSp_3 | SibSp_4 | SibSp_5 | SibSp_8 |
---|---|---|---|---|---|---|---|
505 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
258 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
760 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
586 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
559 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
263 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
111 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
476 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
431 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
367 | 1 | 1 | 0 | 0 | 0 | 0 | 0 |
Lassen Sie uns die Kabine überprüfen. Von den 900 Verifizierungsdaten (train.csv) sind etwa 200 Kabinen. Kabine ist eine nominelle Skala. Wenn das erste Zeichen als dieselbe Gruppe betrachtet und gruppiert wird, wird es wie folgt.
Das Ergebnis ist, dass es jeweils viele überlebte "1" gibt. Die Beschriftungsdaten des ersten Zeichens scheinen nützlich zu sein. Cabin wird auch versuchen, das erste Zeichen mit One-Hot zu codieren. Das Bild ist wie folgt.
PassengerId | Survived | Cabin_A | Cabin_B | Cabin_C | Cabin_D | Cabin_E | Cabin_F | Cabin_G | Cabin_T |
---|---|---|---|---|---|---|---|---|---|
505 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
258 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
760 | 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
586 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
559 | 1 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
263 | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
111 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
476 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
431 | 1 | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
367 | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
Lassen Sie uns anhand der bisherigen Situation lernen. Die Eingabedaten sind wie folgt.
No | Artikelname | Artikelname(japanisch) | Konvertierungsmethode |
---|---|---|---|
1 | Pclass | Ticketklasse | Standardisierung |
2 | Sex | Sex | Quantifizieren |
3 | SibSp | Bruder/Ehepartner | one-Hot-Codierung |
4 | Parch | Elternteil/Kinder | one-Hot-Codierung |
5 | Ticket | Ticketnummer | one-Hot-Codierung |
6 | Fare | Fahrpreis | Standardisierung |
7 | Cabin | Zimmernummer | Das erste Zeichen ist eins-Hot-Codierung |
Probieren Sie alle Modelle von kaggle⑤ und auch die Modellsuche nach Raster von kaggle④ aus. Als ich die Parameter ausprobierte, bekam ich Folgendes:
GradientBoostingClassifier(criterion='friedman_mse', init=None,
learning_rate=0.1, loss='exponential', max_depth=6,
max_features=None, max_leaf_nodes=None,
min_impurity_decrease=0.0, min_impurity_split=None,
min_samples_leaf=1, min_samples_split=2,
min_weight_fraction_leaf=0.0, n_estimators=100,
n_iter_no_change=None, presort='auto',
random_state=1, subsample=1.0, tol=0.0001,
validation_fraction=0.1, verbose=0,
warm_start=False)
Der vollständige Code ist unten. Als ich es jedoch tatsächlich trainierte, stieg die Punktzahl nicht an, als "Kabine" enthalten war, so dass ich Kabine schließlich ausschloss.
import numpy
import pandas
import matplotlib.pyplot as plt
######################################
#Anzahl der Klamer-Verbände
# Cramer's coefficient of association
# 0.5 >= :Sehr starke Korrelation
# 0.25 >= :Starke Korrelation
# 0.1 >= :Leicht schwache Korrelation
# 0.1 < :Keine Korrelation
######################################
def cramersV(x, y):
"""
Calc Cramer's V.
Parameters
----------
x : {numpy.ndarray, pandas.Series}
y : {numpy.ndarray, pandas.Series}
"""
table = numpy.array(pandas.crosstab(x, y)).astype(numpy.float32)
n = table.sum()
colsum = table.sum(axis=0)
rowsum = table.sum(axis=1)
expect = numpy.outer(rowsum, colsum) / n
chisq = numpy.sum((table - expect) ** 2 / expect)
return numpy.sqrt(chisq / (n * (numpy.min(table.shape) - 1)))
######################################
#Korrelationsverhältnis
# Correlation ratio
# 0.5 >= :Sehr starke Korrelation
# 0.25 >= :Starke Korrelation
# 0.1 >= :Leicht schwache Korrelation
# 0.1 < :Keine Korrelation
######################################
def CorrelationV(x, y):
"""
Calc Correlation ratio
Parameters
----------
x : nominal scale {numpy.ndarray, pandas.Series}
y : ratio scale {numpy.ndarray, pandas.Series}
"""
variation = ((y - y.mean()) ** 2).sum()
inter_class = sum([((y[x == i] - y[x == i].mean()) ** 2).sum() for i in numpy.unique(x)])
correlation_ratio = inter_class / variation
return 1 - correlation_ratio
# train.Laden Sie csv
# Load train.csv
df = pandas.read_csv('/kaggle/input/titanic/train.csv')
# test.Laden Sie csv
# Load test.csv
df_test = pandas.read_csv('/kaggle/input/titanic/test.csv')
# 'PassengerId'Extrahieren(Mit dem Ergebnis kombinieren)
# Extract 'PassengerId'(To combine with the result)
df_test_index = df_test[['PassengerId']]
df_all = pandas.concat([df, df_test], sort=False)
##############################
#Datenvorverarbeitung
#Extrahieren Sie die erforderlichen Elemente
# Data preprocessing
# Extract necessary items
##############################
df = df[['Survived', 'Pclass', 'Sex', 'SibSp', 'Parch', 'Ticket', 'Fare']]
df_test = df_test[['Pclass', 'Sex', 'SibSp', 'Parch', 'Ticket', 'Fare']]
##############################
#Zeichnen Sie das Streudiagramm von Tarif und Klasse
# Draw scatter plot of Fare and pclass
##############################
plt.scatter(df['Pclass'], df['Fare'])
plt.xticks(numpy.linspace(1, 3, 3))
plt.ylim(0, 300)
plt.show()
##############################
#Tarif ausschließen 0
# Exclude Fare 0
##############################
df = df[df['Fare'] != 0].reset_index(drop=True)
##############################
#Zeichnen Sie das Streudiagramm von Tarif und Klasse
# Draw scatter plot of Fare and pclass
##############################
plt.scatter(df['Pclass'], df['Fare'])
plt.xticks(numpy.linspace(1, 3, 3))
#plt.xlim(1, 3)
plt.ylim(0, 300)
plt.show()
##############################
#Tarif ausschließen 0
# Exclude Fare 0
##############################
df = df[df['Fare'] != 5].reset_index(drop=True)
##############################
#Zeichnen Sie das Streudiagramm von Tarif und Klasse
# Draw scatter plot of Fare and pclass
##############################
plt.scatter(df['Pclass'], df['Fare'])
plt.xticks(numpy.linspace(1, 3, 3))
plt.ylim(0, 300)
plt.show()
##############################
#Kreuztabellen für Überlebende und Alter anzeigen
# Display Survived and Age crosstabulation table
##############################
cross_age = pandas.crosstab(df_all['Survived'], round(df_all['Age'],-1))
cross_age
cross_age.T.plot(kind='bar', stacked=False, width=0.8)
plt.show()
##############################
#Überlebte und SibSp-Kreuztabelle anzeigen
# Display Survived and SibSp crosstabulation table
##############################
cross_sibsp = pandas.crosstab(df['Survived'], df['SibSp'])
cross_sibsp
cross_sibsp.T.plot(kind='bar', stacked=False, width=0.8)
plt.show()
#Überprüfen Sie die Anzahl der Kramer-Assoziationen, wenn SibSp kleiner als 3 ist
# Check Cramer's coefficient of association when SibSp is less than 3
df_SibSp = df[df['SibSp'] < 3]
cramersV(df_SibSp['Survived'], df_SibSp['SibSp'])
##############################
#Überlebt und SibSp(Weniger als 3)Zeigen Sie die Kreuztabelle von an
# Display a crosstabulation of Survived and SibSp (less than 3)
##############################
cross_sibsp = pandas.crosstab(df_SibSp['Survived'], df_SibSp['SibSp'])
cross_sibsp
cross_sibsp.T.plot(kind='bar', stacked=False, width=0.8)
plt.show()
##############################
#Überlebte und Parch-Kreuztabellen anzeigen
# Display Survived and Parch crosstabulation table
##############################
cross_parch = pandas.crosstab(df['Survived'], df['Parch'])
cross_parch
cross_parch.T.plot(kind='bar', stacked=False, width=0.8)
plt.show()
#Überprüfen Sie die Anzahl der Kramer-Assoziationen, wenn Parch kleiner als 3 ist
# Check Cramer's coefficient of association when Parch is less than 3
df_Parch = df[df['Parch'] < 3]
cramersV(df_Parch['Survived'], df_Parch['Parch'])
##############################
#Überlebt und Parch(Weniger als 3)Zeigen Sie die Kreuztabelle von an
# Display a crosstabulation of Survived and Parch (less than 3)
##############################
cross_parch = pandas.crosstab(df_Parch['Survived'], df_Parch['Parch'])
cross_parch
cross_parch = pandas.crosstab(df_Parch['Survived'], df_Parch['Parch'])
cross_parch
cross_parch.T.plot(kind='bar', stacked=False, width=0.8)
plt.show()
from sklearn.preprocessing import LabelEncoder
##############################
#Datenvorverarbeitung
#Quantifizieren Sie das Etikett (Name)
# Data preprocessing
# Digitize labels
##############################
##############################
# Sex
##############################
encoder_sex = LabelEncoder()
df['Sex'] = encoder_sex.fit_transform(df['Sex'].values)
df_test['Sex'] = encoder_sex.transform(df_test['Sex'].values)
##############################
#Datenvorverarbeitung
# One-Hot-Codierung
# Data preprocessing
# One-Hot Encoding
##############################
##############################
# SibSp
##############################
SibSp_values = df_all['SibSp'].value_counts()
SibSp_values = pandas.Series(SibSp_values.index, name='SibSp')
categories = set(SibSp_values.tolist())
df['SibSp'] = pandas.Categorical(df['SibSp'], categories=categories)
df_test['SibSp'] = pandas.Categorical(df_test['SibSp'], categories=categories)
df = pandas.get_dummies(df, columns=['SibSp'])
df_test = pandas.get_dummies(df_test, columns=['SibSp'])
##############################
# Parch
##############################
Parch_values = df_all['Parch'].value_counts()
Parch_values = pandas.Series(Parch_values.index, name='Parch')
categories = set(Parch_values.tolist())
df['Parch'] = pandas.Categorical(df['Parch'], categories=categories)
df_test['Parch'] = pandas.Categorical(df_test['Parch'], categories=categories)
df = pandas.get_dummies(df, columns=['Parch'])
df_test = pandas.get_dummies(df_test, columns=['Parch'])
##############################
# Ticket
##############################
ticket_values = df_all['Ticket'].value_counts()
ticket_values = ticket_values[ticket_values > 1]
ticket_values = pandas.Series(ticket_values.index, name='Ticket')
categories = set(ticket_values.tolist())
df['Ticket'] = pandas.Categorical(df['Ticket'], categories=categories)
df_test['Ticket'] = pandas.Categorical(df_test['Ticket'], categories=categories)
df = pandas.get_dummies(df, columns=['Ticket'])
df_test = pandas.get_dummies(df_test, columns=['Ticket'])
##############################
#Datenvorverarbeitung
#Zahlen standardisieren
# Data preprocessing
# Standardize numbers
##############################
from sklearn.preprocessing import StandardScaler
#Standardisierung
# Standardize numbers
standard = StandardScaler()
df_std = pandas.DataFrame(standard.fit_transform(df[['Pclass', 'Fare']]), columns=['Pclass', 'Fare'])
df['Pclass'] = df_std['Pclass']
df['Fare'] = df_std['Fare']
df_test_std = pandas.DataFrame(standard.transform(df_test[['Pclass', 'Fare']]), columns=['Pclass', 'Fare'])
df_test['Pclass'] = df_test_std['Pclass']
df_test['Fare'] = df_test_std['Fare']
##############################
#Datenvorverarbeitung
#Behandeln Sie fehlende Werte
# Data preprocessing
# Fill or remove missing values
##############################
df_test = df_test.fillna({'Fare':0})
#Trainingsdaten vorbereiten
# Prepare training data
x_train = df.drop(columns='Survived').values
y_train = df[['Survived']].values
# y_Zugabmessung entfernen
# Delete y_train dimension
y_train = numpy.ravel(y_train)
##############################
#Modell bauen
# Build the model
# GradientBoostingClassifier
##############################
from sklearn.ensemble import GradientBoostingClassifier
model = GradientBoostingClassifier(random_state=1,loss='exponential', learning_rate=0.1, max_depth=6)
import os
if(os.path.exists('./result.csv')):
os.remove('./result.csv')
##############################
#Lernen
# Trainig
##############################
model.fit(x_train, y_train)
##############################
#Ergebnisse vorhersagen
# Predict results
##############################
x_test = df_test.values
y_test = model.predict(x_test)
#Kombinieren Sie das Ergebnis mit dem DataFrame der PassengerId
# Combine the data frame of PassengerId and the result
df_output = pandas.concat([df_test_index, pandas.DataFrame(y_test, columns=['Survived'])], axis=1)
# result.Schreiben Sie csv in das aktuelle Verzeichnis
# Write result.csv to the current directory
df_output.to_csv('result.csv', index=False)
Als ich dies einreichte, wurde die Punktzahl "0,80382".
Die Punktzahl überstieg 0,8 und ich konnte unter den Top 10% sein. Die endgültigen Eingabedaten sind wie folgt.
No | Artikelname | Artikelname(japanisch) | Konvertierungsmethode |
---|---|---|---|
1 | Pclass | Ticketklasse | Standardisierung |
2 | Sex | Sex | Quantifizieren |
3 | SibSp | Bruder/Ehepartner | one-Hot-Codierung |
4 | Parch | Elternteil/Kinder | one-Hot-Codierung |
5 | Ticket | Ticketnummer | one-Hot-Codierung |
6 | Fare | Fahrpreis | Standardisierung |
Bis zu dieser Zeit lernte ich mit Scicit-Learn. Es gibt andere Frameworks für maschinelles Lernen. Verwenden wir also auch ein anderes Framework. Nächstes Mal möchte lernen, wie man Keras benutzt.
29.01.2020 Erstausgabe veröffentlicht 2020/02/03 Tippfehler korrigiert 2020/02/15 Nächsten Link hinzufügen