【发布时间】:2018-08-19 22:47:14
【问题描述】:
我正在使用 Scikit-Learn 的 KNeighborsClassifier() 库来使用球队名称预测足球比赛结果。我的训练数据有一场比赛的 18 个统计数据,例如进球数和犯规次数,而对于我的测试集,我只能使用 2 个球队名称。
问题是训练特征的数量必须与测试特征的数量相匹配,否则我会得到
ValueError: query data dimension must match training data dimension
我怎样才能克服这个问题,同时保持我的训练集包含过去的统计数据,而测试集只包含团队名称?
代码
df = pd.read_csv('2013p.csv') # Training data
dftest= pd.read_csv('2014p.csv') # Test Data
X = np.array(df.drop(['FTR','BbAvH','BbAvD','BbAvA'],1)) #features
y = np.array(df['FTR']) #labels classes
Xtest = np.array(dftest.drop(['FTHG','FTAG','FTR','HTHG','HTAG','HS','AS','HST','AST','HF','AF','HC','AC','HY','AY','HR','AR','BbAvH','BbAvD','BbAvA'],1))#features
ytest = np.array(dftest['FTR']) #labels classes
clf= neighbors.KNeighborsClassifier(n_neighbors =19)#New Classifier
clf.fit(X, y)#Fit on train data
results = clf.predict(Xtest)
数据HomeTeam, AwayTeam, FTHG, FTAG, FTR, HTHG, HTAG, HS, AS, HST, AST, HF, AF401, 301, 2 , 3 , -1 , 1 , 1 , 5 , 7 , 3 , 5 , 2 , 4
【问题讨论】:
-
在这种情况下,您不能使用分类器。您需要其他实用程序,例如每支球队的统计数据、胜率等来指导这一点。显示您的数据。
-
否则你可能会使用之前行的数据。就像你的团队的统计数据可以在测试数据中重复使用。请通过示例更清楚地解释您实际上要预测的内容。
-
我已经添加了一个数据示例,一些列被省略了空间。这将是我的分类器将从中学习和训练的内容,然后我将仅使用主队和客队进行预测。另外,我需要使用这个分类器,比如朴素贝叶斯和线性回归和决策树
标签: python scikit-learn