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

时间:2017-04-27 17:58:53

标签: python machine-learning scikit-learn svm

目前,我有一个使用30个功能和30行的pandas的DataFrame。功能是['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是Win = 1,Draw = 0或Lose = -1

我正在尝试训练Sklearn的svm.SVC,但我不确定如何根据所有.fit()数据来预测Win,Draw或Lose其他功能。

我查看过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是Win,Draw或Lose的标记。

我认为问题是我提供xy的格式,但我不知道如何将其设置为正确的输入格式。

1 个答案:

答案 0 :(得分:0)

我找出了问题,当x是没有label的数据框架而且y必须是pandas.core.series.Series类型时,它才有用,它是通过以下方式获得的做输入['标签']。所以这就是我最终的结果。

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

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

clf.predict(PCAinput)

并返回:

['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']