如何使用RandomForestRegressor方法预测scikitlearn、pandas在Python中的未来结果?

2024-09-29 17:23:43 发布

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

你好,我遇到了这个关于如何使用python和一些库来预测未来NCAAB游戏的教程。我将张贴代码以及文章。这似乎工作得很好,但我认为这只是测试基于游戏在过去。我将如何使用它来预测特定球队的未来比赛?例如,今天A队和B队的比分是多少?你知道吗

我看到的问题是,有些数据只有在游戏结束后才能知道。这个已知的数据就是程序中用来预测分数的数据。你知道吗

第一个实验:我试着只填充游戏发生前我知道的数据,然后用fillna(0)填充剩下的数据。以下是csv的外观:

日期球队,客场助攻百分率,客场助攻,客场盖帽百分率,客场盖帽,客场防守评分,客场防守篮板百分率,客场防守篮板,客场有效进球百分率,客场进球尝试次数,客场进球百分率,客场进球次数,客场罚球尝试次数,客场罚球尝试次数,客场罚球命中率、客场罚球命中率、客场失利率、客场比赛分钟数、客场进攻得分率、客场进攻篮板命中率、客场进攻篮板命中率、客场个人犯规命中率、客场得分、客场抢断命中率、客场抢断命中率、客场三分抢断命中率、客场三分抢断命中率、客场三分抢断命中率、客场三分抢断命中率、,客场三分球,客场总篮板,客场总篮板,客场真投篮,客场换人,客场失误,客场二分球,客场二分球,客场二分球,客场致胜,客场助攻,主场盖帽,主场盖帽,主场防守得分率,主场防守篮板得分率,主场防守篮板得分率,主场有效投篮得分率,主场进球次数,主场进球次数,主场进球次数,主场进球次数,主场罚球次数,主场罚球次数,主场进攻得分率,主场进攻篮板百分率,主场进攻篮板,主场个人犯规,主场得分,主场抢断百分率,主场抢断,主场三分尝试率,主场三分投篮命中率,主场三分投篮命中率,主场三分投篮命中率,主场三分投篮命中率,主场三分投篮命中率,主场三分投篮命中率,主场总篮板百分率,主场真投篮命中率,主场失误率,主场失误率,主场二分球命中率,主场二分球命中率,主场二分球命中率,主场二分球命中率,主场二分球命中率,主场获胜率,速度 0,0,0,0,0,0,0,0,0,59,0,0,0,0,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0.7,7,0,0,0,0,0,0,0,0,0,0,42,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,.1,1,0 最后一行代码更改为: 打印(模型.预测(最终微调)。aType(int),y\u测试)

“最终微调”是正在预测的新csv。你知道吗

结果一点也不准确。我错过了什么?你知道吗

以下是原始代码:

import pandas as pd
from sportsreference.ncaab.teams import Teams
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split

FIELDS_TO_DROP = ['away_points', 'home_points', 'date', 'location',
                  'losing_abbr', 'losing_name', 'winner', 'winning_abbr',
                  'winning_name', 'home_ranking', 'away_ranking']

dataset = pd.DataFrame()
teams = Teams()
for team in teams:
    dataset = pd.concat([dataset, team.schedule.dataframe_extended])
X = dataset.drop(FIELDS_TO_DROP, 1).dropna().drop_duplicates()
y = dataset[['home_points', 'away_points']].values
X_train, X_test, y_train, y_test = train_test_split(X, y)
parameters = {'bootstrap': False,
              'min_samples_leaf': 3,
              'n_estimators': 50,
              'min_samples_split': 10,
              'max_features': 'sqrt',
              'max_depth': 6}
model = RandomForestRegressor(**parameters)
model.fit(X_train, y_train)
print(model.predict(X_test).astype(int), y_test)

这是我收到的邮件: https://towardsdatascience.com/predict-college-basketball-scores-in-30-lines-of-python-148f6bd71894

谢谢你!你知道吗


Tags: 数据test游戏train次数dataset投篮命中率
1条回答
网友
1楼 · 发布于 2024-09-29 17:23:43

这样想,如果您想测试模型的拟合优度,那么您必须提前知道结果,这样您就可以测量(模型)输出和实际结果之间的距离,并执行必要的调整以提高模型的整体性能。你知道吗

一旦你训练了你的模型,如果你想预测未来的价值,那么(在你不知道你在做什么的情况下)你应该给你的模型提供训练过的相同的特征,但是你要用你将要做预测的数据。下面是一个非常基本的例子,使用两个变量来预测两个团队(a和B)的得分:

import pandas as pd 
data = {'Temperature':[10,20,30,25],'Humidity':[40,50,80,65],'Score_A':[1,2,3,2],'Score_B':[6,3,1,2]}
from sklearn.ensemble import RandomForestRegressor
from sklearn.model_selection import train_test_split
df = pd.DataFrame(data)
print(df)
X = df[['Temperature','Humidity']]
Y = df[['Score_A','Score_B']]
X_train, X_test, y_train, y_test = train_test_split(X, Y,random_state=42)
model = RandomForestRegressor(random_state=42)
model.fit(X_train, y_train)

在这里,我已经训练了我的模型,所以如果我想做一个未来的预测,我需要通过我在训练中使用的相同的特性(温度和湿度),但是要用我想做预测的值。假设我们的朋友气象学家说下一场比赛的温度和湿度分别是35和70。所以我需要将.predict()与这些值一起使用:

model.predict(print(model.predict([[35,70]])) 

返回以下输出:

[[2.6 1.4]]

如果你想让它更华丽:

prediction = model.predict([[35,70]])
print("Team A will score: ",prediction[0][0])
print("Team B will score: ",prediction[0][1])

返回:

Team A will score:  2.6
Team B will score:  1.4

相关问题 更多 >

    热门问题