Я только что обучил свою первую модель машинного обучения на основе набора данных titani c от kaggle. Я получаю значение RMSE ~ 0,4, это хорошо? - PullRequest
1 голос
/ 26 мая 2020

Обратите внимание: я обучил свою модель только на основе числовых столбцов, а не строковых столбцов

И, пожалуйста, предложите некоторые ресурсы для go дальнейшего развития машинного обучения, поскольку мне очень нравится этот предмет.

Спасибо

Вот код, который дает следующий результат: -

train rmse: 0,42 test rmse: 0,43

import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
import pandas as pd
import matplotlib.pyplot as plt

dftrain = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/train.csv')
dftest = pd.read_csv('https://storage.googleapis.com/tf-datasets/titanic/eval.csv')

dftrain.loc[dftrain['fare'] == 0, 'fare'] = 34.85
plt.plot(list(dftrain.age), list(dftrain.fare), '.',markersize = 1)

dftrain = dftrain.drop(['sex', 'class', 'deck','embark_town', 'alone'], axis =1 )
X = dftrain.loc[:, dftrain.columns != 'survived']
y = dftrain.loc[:, 'survived']

model = Sequential()
model.add(Dense(128, activation = 'relu', input_dim = 4))
model.add(Dense(64, activation = 'relu'))
model.add(Dense(32, activation = 'relu'))
model.add(Dense(1, activation = 'sigmoid'))
model.compile(optimizer = 'adam' , loss = 'binary_crossentropy', metrics = ['accuracy'])
model.fit(X, y , epochs = 200)

dftest = dftest.drop(['sex', 'class', 'deck','embark_town', 'alone'], axis =1 )
A = dftest.loc[:, dftest.columns != 'survived']
b = dftest.loc[:, 'survived']

from sklearn.metrics import mean_squared_error
import numpy as np

train_pred = model.predict(X)
train_rmse = np.sqrt(mean_squared_error(y, train_pred))
test_pred = model.predict(A)
test_rmse = np.sqrt(mean_squared_error(b, test_pred))

print("train rmse: {:0.2f}".format(train_rmse))
print("test rmse: {:0.2f}".format(test_rmse))```




1 Ответ

1 голос
/ 26 мая 2020

Во-первых, root среднеквадратическая ошибка может быть не очень хорошим показателем для рассмотрения в задачах классификации в первую очередь. Чтобы узнать, почему, обратитесь к либо к этому сообщению , либо к этому сообщению обмена стеками статистики .

Во-вторых, вы тренируете довольно большую нейронную сеть (со многими параметрами) по сравнению с имеющимся объемом тренировочных данных (было всего 2224 пассажира и членов экипажа). Когда количество параметров в вашей модели сопоставимо с объемом обучающих данных, вы рискуете переобучиться. Обратитесь к этому руководству , чтобы узнать, что вы можете узнать о своей модели, глядя на кривые потерь при обучении / проверке, и о том, как можно бороться с пере / недоподбором. Вы можете поэкспериментировать с разными темпами обучения, количеством эпох, размерами пакетов, методами нормализации и т. Д. c.

Возможно, вы также захотите взглянуть на другие показатели, такие как оценка точности и точность и отзыв

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...