如何仅使用所有功能进行培训,而仅使用2个功能进行测试?

2024-04-26 22:53:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用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,) 

Tags: 模型testdatasizetrainrandomthissplit
1条回答
网友
1楼 · 发布于 2024-04-26 22:53:02

如果您想保留特性提供的所有信息,请考虑在训练模型之前使用平均值或某种游戏内统计数据的历史度量。i、 e.如果A队在最近三场比赛中进了2、3和1个球,而在你训练的那场比赛中进了5个球,那么就用最近三场比赛的平均值,而不是实际的总进球数。你的训练误差可能更大,但是当你去预测一个新的游戏时,你仍然可以使用尽可能多的数据。你知道吗

当你试图把一个模型训练成一个预测器时,就像@desertnaut所说的,只使用在你运行预测时可用的变量。你知道吗

相关问题 更多 >