метод прогнозирования керасов - PullRequest
0 голосов
/ 05 мая 2019

Итак, у меня есть небольшой проект о предсказании чемпиона nba 2019, но кажется, что мой код недостаточно ясен, чтобы заставить keras понять, чего я хочу.Я передал список прошлых чемпионов в своем наборе данных и сделал его выходным классом для получения текущего чемпиона.

Я использую набор данных для статистики команд с 2014 по 2018 регулярные сезоны, и я предполагаю, чтоУ меня должна быть статистика 2019 года, чтобы сделать это.Я сделал свой набор данных очень хорошо закодированным, чтобы мой NN мог понять, предоставив по одной горячей кодировке для каждой функции, которую я считаю полезной.

x = pd.concat([df.drop(['Unnamed: 0','Team','Game','Date','Opponent','LastSeasonChamp'], axis = 1), df_ohc], axis = 1)
y = df['LastSeasonChamp']

x_train, x_test, y_train, y_test = train_test_split(x, y, test_size = 0.35)

x_train = tf.keras.utils.normalize(x_train.values, axis = 1)
x_test = tf.keras.utils.normalize(x_test.values, axis = 1)

n_classes = 30

model = tf.keras.Sequential()
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(x_train.shape[1], input_shape = (x_train.shape[0],x_train.shape[1]), activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(np.mean([x_train.shape[1], n_classes], dtype = int), activation = tf.nn.relu))
model.add(tf.keras.layers.Dense(n_classes, activation = tf.nn.softmax))

model.compile(optimizer = 'adagrad' , loss = 'sparse_categorical_crossentropy', metrics=['accuracy'])

model.fit(x_train, y_train.values, epochs = 3)

model.evaluate(x_test, y_test)
model.save('nba_champ_2019')
new_model = tf.keras.models.load_model('nba_champ_2019')
pred = new_model.predict(x_test)
y_pred = to_categorical(pred)

Итак, я мог бы ожидать, что мой y_pred будет столбцом с 0 и 1и все, что я получаю, это столбец, полный 1.

1 Ответ

0 голосов
/ 05 мая 2019

Функция to_categorical используется для преобразования списка идентификаторов классов в одну горячую матрицу.Вам это не нужно здесь.Вы должны получить ожидаемый результат, удалив в этом случае.

...