【发布时间】:2018-11-22 20:39:43
【问题描述】:
我正在构建一个机器学习模型,用于使用 this dataset 预测英超联赛(足球/足球)的结果,该模型具有诸如主场进球、客场进球、射门得分等功能。这是我加载后的代码数据集:
features = list(data.columns.values)
X, y = data[features], data.FTR #FTR stands for Full Time Result
print(X.shape)
-> (4940, 20)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=18)
nb = GaussianNB()
nb.fit(X_train, y_train)
y_nb = nb.predict(X_test)
这提供了非常好的准确率 (72%),但这是因为当我要求模型预测结果时,我让它可以访问我正在尝试的比赛的统计数据(包括进球数)预测。有没有办法“隐藏”除主队和客队之外的所有功能并以这种方式预测结果?
我试过这样做:
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=18)
X_test = X_test.iloc[:, [0, 1]] #this only keeps the column with home team name and away team name
nb = GaussianNB()
nb.fit(X_train, y_train)
y_nb = nb.predict(X_test)
但是,这会产生以下错误:
ValueError: operands could not be broadcast together with shapes (988,2) (20,)
【问题讨论】:
-
绝对没有理由(事实上,它甚至没有意义)使用预测时不可用的特征来训练你的分类器;仅保留将可用的功能并仅将它们用于您的培训...
-
@desertnaut 我理解,但是我将如何使用统计数据来创建模型,因为显然游戏内统计数据在比赛之前是不可用的。我在想要么用它们来量化一支球队相对于另一支球队有多好,要么只使用赛前可用的功能,并且基本上使用基于球队之间过去比赛的线性回归来单独预测每个统计数据......
标签: python machine-learning scikit-learn training-data