我如何训练我的 SVM 来预测比赛结果?

How can I train my SVM to predict the outcome of the match?

目前我有一个使用 pandas 的 DataFrame,具有 30 个特征和 30 行。特征是 ['home_team_goals_difference' 'away_team_goals_difference' 'games_won_home_team' 'games_won_away_team' 'games_against_won' 'games_against_lost' 'League_24558.0' 'home_player_1_overall_rating'...'home_player_11_overall_rating' 'away_player_1_overall_rating'...'away_player_11_overall_rating' 'label'] 所有值都是浮点数。

label 是赢 = 1,平 = 0 或输 = -1

我正在尝试训练 Sklearn 的 svm.SVC,但我不确定如何 .fit() 数据以便根据所有其他功能预测赢、平或输。

我看过 Sklearn 教程,但他们使用 dataset.data 和 dataset.target,我不知道这对我的数据有什么影响。

clf = svm.SVC(gamma=0.001)
x = inputs[:-1]
y = inputs.loc[:,'label'][:-1]
clf.fit(x,y)
print("Prediction:", clf.predict(PCAinput[-1]))

这就是我正在尝试的。 x 是整个 DataFrame,ylabel。 PCAinput 是 DataFrame 但没有 labellabel 是赢、平或输的标签。

我认为问题出在我提供 xy 的格式上,但我不知道如何将其转换为正确的输入格式。

我解决了这个问题,当 x 是一个没有 label 的 DataFrame 并且 y 必须是 pandas.core.series.Series 类型时,它可以工作,这是通过以下方式获得的做输入['label']。所以这就是我最终得到的。

X = PCAinput          #pandas DataFrame without 'label'
y = inputs['label']   #pandas Series only the labels
clf = svm.SVC()
clf.fit(X,y)

有了这个我现在可以做到:

clf.predict(PCAinput)

和returns:

['Defeat', 'Defeat', 'Defeat', 'Win', 'Draw', 'Defeat', 'Win',
   'Defeat', 'Defeat', 'Win', 'Win', 'Defeat', 'Win', 'Draw', 'Defeat',
   'Defeat', 'Win', 'Defeat', 'Win', 'Defeat', 'Win', 'Win', 'Win',
   'Win', 'Draw', 'Draw', 'Win', 'Defeat', 'Win', 'Win']