他山之石可以攻玉。
华为AI Gallery社区的技术贴。文章中将预测结果进行了二分类问题的处理(胜/平负两类)。
所需技能Notebook+Python+Pandas。
本次预测标签为赛果(win_result),计算home_score和away_score的差值,若两者差值大于0,则赛果win_result为胜(1),反之为负(0)。
df['diff'] = df['home_score']-df['away_score']
df['win_result'] = df['diff'].apply(lambda x: 1 if x>0 else 0)
将做特征进行衍生,主要分为5种衍生方式:
- 主队最近5、2、1场比赛的胜负情况,包括胜利场数、失败场数、净胜球(主队分数减去客队分数)均值。
- 主队与当前客队的最近5、2、1场比赛的胜负情况,包括胜利场数、失败场数、净胜球均值。
- 主队最近15、7、3、2、1年比赛的胜负情况,包括总场数、胜利场数、失败场数。
- 主客队历史上全部赛事的胜负情况,。
- 赛事发生的月份、季节。
# 剔除友谊赛的数据,共24908个样本
df = df[df['tournament']!='Friendly']
def process_home_team_latest_info(df):
row_num =df.shape[0]
for i in range(row_num):
home_team = df.loc[i,'home_team']
for suffix in ['5','3','1']:
j = i-1
flag = False
while i-j<=int(suffix) and j>=0 and df.loc[j,'home_team'] == home_team:
j-=1
flag = True
j = j+1
if flag and i-j<=int(suffix) and j>=0:
df.loc[i,'num_'+suffix]=i-j
df.loc[i,'diff_num_'+suffix]=df.loc[j:i-1,'diff'].mean()

本文档展示了如何使用Python和Pandas对足球比赛数据进行预处理,包括创建赛果预测标签,计算主客队比赛胜负情况的衍生特征,如最近几场比赛的胜利场数、失败场数和净胜球均值。通过处理友谊赛数据,作者构建了多种特征,如球队历史战绩、赛季表现等,为后续的建模和预测做好准备。整个过程在PySpark环境下进行,处理大数据集时表现出良好的效率和组织性。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



