Проверьте правильность способа оценки модели keras по невидимым данным. - PullRequest
0 голосов
/ 23 июня 2019

Я изучил Keras и создал свою первую модель нейронной сети следующим образом:

from keras.layers import Dense
import keras
from keras import Sequential
from sklearn.metrics import accuracy_score

tr_X, tr_y = getTrainingData()

# NN Architecture
model = Sequential()
model.add(Dense(16, input_dim=tr_X.shape[1]))
model.add(keras.layers.advanced_activations.PReLU())

model.add(Dense(16))
model.add(keras.layers.advanced_activations.PReLU())

model.add(Dense(1, activation='sigmoid'))

# Compile the Model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

# Fit the Model
model.fit(tr_X, tr_y, epochs=1000, batch_size=200, validation_split=0.2)

# ----- Evaluate the Model (Using UNSEEN data) ------
ts_X, ts_y = getTestingData()
yhat_classes = model.predict_classes(ts_X, verbose=0)[:, 0]
accuracy = accuracy_score(ts_y, yhat_classes)
print(accuracy)

Я не уверен насчет последней части моего кода, то есть оценки модели с использованием model.predict_classes(), когда новые данные загружаются с помощью пользовательского метода getTestingData(). Смотри, моя цель - протестировать окончательную модель, используя новые НЕИЗВЕСТНЫЕ данные, чтобы оценить ее прогноз. Мой вопрос об этой части: правильно ли я оцениваю модель?

Спасибо,

1 Ответ

1 голос
/ 23 июня 2019

Да, это правильно.Вы можете использовать предикат или предикат_классы, чтобы получить прогнозы на тестовых данных.Если вам нужны потери и метрики напрямую, вы можете использовать метод оценки путем подачи ts_X и ts_y.

y_pred = model.predict(ts_X)

loss, accuracy = model.evaluate(ts_X, ts_y)

https://keras.io/models/model/#predict

https://keras.io/models/model/#evaluate

Разница междупредикат & предикат_классы: В чем разница между функциями "предсказать" и "прогнозировать_класс" в кератах?

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