如何重塑Pandas列以加载列总和而非全部列值至分类器?
如何将DataFrame列的总和作为特征输入分类器?
看起来你想要把最近N场比赛的统计列总和作为特征喂给分类器,而不是用单场的原始数据对吧?我帮你调整代码来实现这个需求:
步骤1:读取并筛选数据
首先还是读取你的CSV数据,然后选择需要计算总和的特征列,同时截取最近numGamesToLookBack场的数据:
import pandas as pd previous_games_stats = pd.read_csv('stats/2016-2017 CANUCKS STATS.csv', header=1) numGamesToLookBack = 10 # 选择你需要计算总和的特征列(这里保留你原来的GF、GA,要所有10列就调整这个列表) feature_cols = ['GF', 'GA'] # 截取最近numGamesToLookBack场的特征数据 recent_games = previous_games_stats[feature_cols].head(numGamesToLookBack)
步骤2:计算列总和并转换格式
接下来计算这些列的总和,注意大多数分类器要求输入是二维数组,所以需要把求和后的一维结果转成二维格式:
# 计算每列的总和,得到一个Series totals = recent_games.sum() # 转换成分类器需要的二维数组格式 X = totals.values.reshape(1, -1) # 如果你需要保留列名方便后续查看,也可以转成DataFrame X_df = pd.DataFrame([totals.values], columns=feature_cols)
步骤3:处理目标变量
最后处理你的目标变量y,要确保它对应你计算总和的这批数据的结果(比如最近10场的最后一场结果):
# 取对应批次数据的目标结果(索引从0开始,所以取第numGamesToLookBack-1位) y = previous_games_stats['Unnamed: 7'].iloc[numGamesToLookBack - 1]
扩展:如果要计算所有10列的总和
如果你想要的是所有10列(除了目标列)的总和,只需要调整feature_cols的定义:
# 排除目标列'Unnamed: 7',选取其他所有列作为特征 feature_cols = [col for col in previous_games_stats.columns if col != 'Unnamed: 7']
这样修改后,X就是你需要的各列总和数据,可以直接输入到分类器中使用了。
内容的提问来源于stack exchange,提问作者tom44
相关产品推荐
相关产品推荐

