Python Keras对任何输入都预测相同的结果

Python Keras对任何输入都预测相同的结果,python,tensorflow,keras,Python,Tensorflow,Keras,我正在学习机器学习,我的数据集由6列组成: home_team, away_team, home_odds, away_odds, home_score, away_score, 1_if_home_wins_else_0 为了能够向Tensorflow提供团队,我将每个团队都转换为整数,因此前两列是整数,就像数据库ID一样 csv中有10k行 范例 现在我正试图修改的代码来预测主队的获胜 但它对任何输入返回相同的预测0。当我只是在概率上尝试时,预测更准确,至少不一样 代码 您知道问题出在哪里

我正在学习机器学习,我的数据集由6列组成:

home_team, away_team, home_odds, away_odds, home_score, away_score, 1_if_home_wins_else_0
为了能够向Tensorflow提供团队,我将每个团队都转换为整数,因此前两列是整数,就像数据库ID一样

csv中有10k行

范例

现在我正试图修改的代码来预测主队的获胜

但它对任何输入返回相同的预测0。当我只是在概率上尝试时,预测更准确,至少不一样

代码


您知道问题出在哪里吗?

将前两列团队名称转换为整数的事实毫无意义。通过这种方式,您将暗示具有相似ID(如1146和1179)的团队将执行相似的任务,而具有完全不同ID(如4和6542)的团队将执行非常不同的任务。通常,这类数据将以不同的方式呈现,甚至从数据集中排除

在这种情况下,我会排除这些列,因为赔率似乎包含了所有必要的数据,我甚至不会使用神经网络,而只是比较赔率。但是,我知道您希望使用一个简单的数据集进行学习,在这种情况下,仅使用赔率就可以了

请注意,神经网络可能会学习将胜利分配给获胜几率最大的团队,如下所示:

如果主场优势>客场优势: 如果家庭获胜,则为1,否则为0=1 其他: 如果家庭获胜,则为一,否则为零=0
是的,你是对的,球队的胜算很大,所以这不是一个好主意。但是,如果你说的是真的,它不会对所有预测都预测相同的0结果,是吗?对不起,现在它不会预测相同的结果,忽略前面的评论:
# load the dataset
dataset = loadtxt('football_data.csv', delimiter=',')
# split into input (X) and output (y) variables
X = dataset[:, 0:4]
y = dataset[:, 6]
# define the keras model
model = Sequential()
model.add(Dense(12, input_dim=4, activation='relu'))
model.add(Dense(8, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
# compile the keras model
model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])
# fit the keras model on the dataset
model.fit(X, y, epochs=150, batch_size=10)
# evaluate the keras model
_, accuracy = model.evaluate(X, y)
print('Accuracy: %.2f' % (accuracy * 100))

# make class predictions with the model
predictions = model.predict_classes(X)
# summarize the first 5 cases
for i in range(50):
    print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i]))