华为AI Gallery社区《基于机器学习的欧洲杯赛事预测》技术分析系列——(二)数据预处理

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

他山之石可以攻玉。

华为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种衍生方式:

  1. 主队最近5、2、1场比赛的胜负情况,包括胜利场数、失败场数、净胜球(主队分数减去客队分数)均值。
  2. 主队与当前客队的最近5、2、1场比赛的胜负情况,包括胜利场数、失败场数、净胜球均值。
  3. 主队最近15、7、3、2、1年比赛的胜负情况,包括总场数、胜利场数、失败场数。
  4. 主客队历史上全部赛事的胜负情况,。
  5. 赛事发生的月份、季节。
# 剔除友谊赛的数据,共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()
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sundayhost

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值