我正在学习机器学习,我的数据集由 7 列组成:home_team, away_team, home_odds, away_odds, home_score, away_score, 1_if_home_wins_else_0为了能够为团队提供 Tensorflow,我将每个团队都转换为整数,因此前两列是整数(如数据库 ID)csv 中有 10k 行。例子我修改了pima Indians 糖尿病的代码来预测主队的获胜情况。所以现在它“预测”主队是否赢(1)否则为0。现在我想修改算法来预测准确的分数home_score,away_score。我知道输出是错误的,它只是在学习。代码# load the datasetdataset = loadtxt('football_data.csv', delimiter=',')# split into input (X) and output (y) variablesX = dataset[:, 0:4]y = dataset[:, 6]# define the keras modelmodel = 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 modelmodel.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])# fit the keras model on the datasetmodel.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 modelpredictions = model.predict_classes(X)# summarize the first 5 casesfor i in range(50): print('%s => %d (expected %d)' % (X[i].tolist(), predictions[i], y[i]))你知道怎么做吗?
1 回答

www说
TA贡献1775条经验 获得超8个赞
由于您现在要预测分数,即连续量(尽管是整数),因此这不再是分类问题,而是回归问题。
为此,您需要对现有模型进行两项更改;首先是修改你的最后一层
model.add(Dense(2)) # final layer
即 2 个节点(与所需的输出一样多),没有任何激活(这意味着默认值linear
,即我们用于回归的那个)。
第二个修改应该在loss中:
model.compile(loss='mean_squared_error', optimizer='adam')
您当然需要相应地修改您的y
数据,以便每个包含 2 个元素,并使用model.predict
而不是model.predict_classes
(因为您现在没有类)。
您要求的本质上是多输出回归;另请参阅最近的线程:如何为单输入和多输出训练回归模型?- 使用功能性 Keras API 可能会更好,如那里所示并且已经在评论中建议。
添加回答
举报
0/150
提交
取消