Итак, у меня есть небольшой проект о предсказании чемпиона 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.