我正在學習機器學習,我的數(shù)據(jù)集由 7 列組成:home_team, away_team, home_odds, away_odds, home_score, away_score, 1_if_home_wins_else_0為了能夠為團隊提供 Tensorflow,我將每個團隊都轉(zhuǎn)換為整數(shù),因此前兩列是整數(shù)(如數(shù)據(jù)庫 ID)csv 中有 10k 行。例子我修改了pima Indians 糖尿病的代碼來預測主隊的獲勝情況。所以現(xiàn)在它“預測”主隊是否贏(1)否則為0。現(xiàn)在我想修改算法來預測準確的分數(shù)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條經(jīng)驗 獲得超8個贊
由于您現(xiàn)在要預測分數(shù),即連續(xù)量(盡管是整數(shù)),因此這不再是分類問題,而是回歸問題。
為此,您需要對現(xiàn)有模型進行兩項更改;首先是修改你的最后一層
model.add(Dense(2)) # final layer
即 2 個節(jié)點(與所需的輸出一樣多),沒有任何激活(這意味著默認值linear
,即我們用于回歸的那個)。
第二個修改應該在loss中:
model.compile(loss='mean_squared_error', optimizer='adam')
您當然需要相應地修改您的y
數(shù)據(jù),以便每個包含 2 個元素,并使用model.predict
而不是model.predict_classes
(因為您現(xiàn)在沒有類)。
您要求的本質(zhì)上是多輸出回歸;另請參閱最近的線程:如何為單輸入和多輸出訓練回歸模型?- 使用功能性 Keras API 可能會更好,如那里所示并且已經(jīng)在評論中建議。
添加回答
舉報
0/150
提交
取消