PUBG 吃鸡排名预测

对于一般机器学习来说,总体的流程其实分为三个大的步骤:

1. 数据清洗
2. 模型构建
3. 模型评估

其中,第二步和部分第三步都是靠套路进行解决的,所需要修改的部分只是一些调参,可以使用gridCV 的方法进行调参,很多情况下能得到不错的效果。
所以其实最难的部分主要其实还是数据清洗,相对于调用库来说,怎样把数据清洗成有用的、自己想要的格式,是一个最大的问题。

数据清洗难题的解决办法

个人认为机器学习相对于深度学习简单的一个原因,就是因为机器学习的可解释性很强,每一步都可以根据实际情况进行解释,所以带入实际问题去理解数据是个不错的选择,例如本例中,无武器杀人,或者单场杀人过多,行走距离过短,没有掉血行为的,都很有可能是外挂。在入门比赛泰坦尼克号的代码中,这个问题会更加明显。。

整个流程的套路:

流程分析:

  1. 获取数据
    1.1 数据集说明
    x, y 位置坐标
    accuracy 位置的准确率
    time 时间戳
    placeid 位置点

  2. 基本数据处理
    2.1 太大了,缩小数据范围
    2.2 #- assists [助攻数]
    #- boosts [使用能量,道具数量]#- damageDealt [总伤害]
    #- DBNOs [击倒敌人数量]
    #- heals [使用治疗药品数量]
    #- killPlace [本场比赛杀敌排行]

  • kills [杀敌数]
  • killStreaks [连续杀敌数]
  • matchDuration [比赛时长]
  • rankPoints [Elo排名]
  • revives [救活队员的次数]
  • rideDistance [驾车距离]
  • teamKills [杀死队友的次数]
  • vehicleDestroys [毁坏机动车的数量]
  • walkDistance [步行距离]
  • winPoints [胜率Elo排名]
  • winPlacePerc [百分比排名]
    2.3 筛选出签到多的地方
    2.4 确定特征值、目标值
    2.5 分割数据集
  1. 特征工程
    3.1 数据标准化

  2. 机器学习(knn + cv)

  3. 模型评估

数据在这儿:

https://pan.baidu.com/s/1TrcWYfTaJrHZGWXQ_R_l8Q 提取码acdf

代码如下:

# 1. 获取数据
file_path = "./pubg/PUBG_to_stu/data/train_V2.csv"
df = pd.read_csv(file_path)
print(df.head())
print(df.shape)
# 2. 基本数据处理
# 2.1 去掉na
df_0 = df.dropna(axis=0, how='any')
print(df_0.shape)
# 2.2 选取部分数据
df_part = df_0
print(df_part.shape)
# 收集武器数为0,有击杀数
df_part_distance["weapon"] = (df_part_distance["kills"] > 0) & (df_part_distance["weaponsAcquired"] == 0)
df_part_d_weapon = df_part_distance.drop(df_part_distance[df_part_distance["weapon"] == True].index)
print(df_part_d_weapon.shape)
#  击杀值过高
df_part_d_w_kills = df_part_d_weapon.drop(df_part_d_weapon[df_part_d_weapon["kills"]>30].index)
# 爆头率过高
df_part_d_w_kills['headshot_rate'] = df_part_d_w_kills['headshotKills'] / df_part_d_w_kills['kills']
df_part_d_w_kills['headshot_rate'] = df_part_d_w_kills['headshot_rate'].fillna(0)
df_part_d_w_k_heads = df_part_d_w_kills.drop(df_part_d_w_kills[(df_part_d_w_kills['headshot_rate'] == 1) & (df_part_d_w_kills['kills'] > 9)].index)
print(df_part_d_w_k_heads.shape)
# 2.3 筛选一些有用的列
df_select = df_part_d_w_k_heads[["assists","boosts","DBNOs","heals","kills","matchDuration","rankPoints","revives","rideDistance","teamKills",
                     "vehicleDestroys","walkDistance","winPoints"]]
print(df_select.shape)
# 2.4 确定特征值、目标值
x = df_select
y = df_part_d_w_k_heads[["winPlacePerc"]]
print(x.shape)
print(y.shape)
# 3. 特征工程
# 3.1 数据标准化
# 3.1.1 实例化标准化对象
transfer = StandardScaler()
# 3.1.2调用fit_trainsform 先计算均值,标准差,在进行标准化
x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)
print("完成标准化")
# 4. 机器学习(knn + cv)
# 4.1 实例化估计器
estimator =Ridge(alpha=1.0, copy_X=True, fit_intercept=True, max_iter=None,
                 normalize=False, random_state=None, solver='auto', tol=0.001)
# 4.2 训练
estimator.fit(x_train, y_train)
print("完成训练")
# 5. 模型评估
# 5.1 预测值输出
y_pre = estimator.predict(x_test)
print("预测值:", y_pre)
print("完成预测")
# 5.2 score
score = estimator.score(x_test, y_test)
print("准确率:", score)
mae = mean_absolute_error(y_test, y_pre)
print(mae)
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PUBG排名预测是一个在Kaggle上的机器学习竞赛。PUBG(全名为绝地求生大逃杀)是一款非常流行的多人在线战略游戏,玩家需要在一个虚拟战场上与其他玩家进行生存战斗。这个竞赛的目标是使用机器学习算法来预测玩家的排名。 为了进行预测,竞赛的参与者需要利用Kaggle提供的PUBG比赛数据集。这个数据集包含了有关游戏中每个玩家的详细信息,包括他们在比赛中的表现和游戏状态的各种指标。参与者可以使用这些指标来构建他们的预测模型。 参与者可以使用多种机器学习算法来开发他们的模型,如线性回归、决策树、随机森林等。他们可以根据自己的判断和经验选择适当的特征,并使用特征工程方法对数据进行处理。然后,他们可以利用训练数据集来训练模型,并使用测试数据集来评估模型的性能。 在竞赛的最后,参与者提交他们的预测结果,并使用指定的评估指标来评判模型的准确性。常见的评估指标有均方根误差(RMSE)和平均绝对误差(MAE)。竞赛的目标是开发出一个准确预测玩家排名的模型,使得在未来的比赛中可以更好地对玩家的表现进行预测。 通过参加这个竞赛,参与者可以学习如何使用机器学习算法来解决实际问题,并与Kaggle社区中的其他参与者进行交流和合作。此外,竞赛还可以提供一个平台,让参与者展示他们的技能和创新,并有机会赢取奖金或积分。总之,PUBG排名预测Kaggle竞赛对于机器学习爱好者来说是一个很好的学习和交流机会。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值