keras预测类方法

时间:2019-05-04 21:02:13

标签: python tensorflow machine-learning keras deep-learning

所以,我正在进行有关预测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 :(得分:0)

to_categorical函数用于将类ID列表转换为一键矩阵。您在这里不需要它。在这种情况下,应删除预期的输出。