英雄联盟数据分析专题(三)

写在前面的话

在这里插入图片描述
本次的主题是关于英雄联盟的Tribunal法庭系统国服也叫做议事大厅。英雄联盟议事大厅是为了解决骚扰投诉而设计的,让所有拥有资格的玩家去评估每个被投诉者的案子。英雄联盟议事大厅会提供每一位被举报玩家的相关数据,审判者需要对内容进行仔细的判断后,决定“惩戒”或“宽恕”被举报的玩家。(摘自英雄联盟国服官网)

在游戏中我们难免会遇到一些不太友好的玩家使用语言攻击对手或队友,而在结束游戏后针对言行过激的玩家大部分玩家都会使用举报系统进行举报。其中一些被举报的案例会统一交由参与议事大厅的玩家来投票决定对被举报采取何种处罚方式。本篇将使用的数据集正是这些有举报行为的对局中的聊天记录,虽然该数据集来自北美服务器,但我认为不同服务器玩家之间存在较大的共性,希望在阅读过本文后读者们对英雄联盟中的玩家行为有更深刻的理解同时也能规范自己在游戏中的言行来创造更好的游戏环境。

背景介绍

该数据集包含了超过一万场被举报对局的聊天记录,其中包含每场对局中十个玩家全部聊天记录。且该数据集中的字段也非常丰富,共有9个字段,分别为:
message: 聊天记录内容
association_to_offender: 与被举报人的关系,分为敌方,队友以及被举报人
time: 聊天记录发生时的游戏对局内时间
case_total_reports: 在该被举报人被提交到议事大厅之前共被举报次数
allied_report_count: 队友中举报该玩家人数
enemy_report_count: 对方中举报该玩家人数
most_common_report_reason: 在最近5次被举报对局中该玩家最常被举报原因
chatlog_id: 聊天记录对应ID(也可做为每场游戏对局的ID,相同游戏对局的每条聊天记录ID相同)
champion_name: 每条聊天记录对应的英雄名称

从上面的介绍中可以看到该数据集的信息量非常大,有了丰富的数据集我们就可以从不同的维度来进行分析。

探索性数据分析

#导入本文中所有需要的库
import pandas as pd
from nltk.tokenize import RegexpTokenizer
from collections import Counter
import operator
import re
import nltk
nltk.download('stopwords')
from nltk.corpus import stopwords
from sklearn.feature_extraction.text import TfidfVectorizer
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import BernoulliNB
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt

首先我们载入数据集并对数据集做一些基本的处理。

#载入数据集
data=pd.read_csv('chatlogs.csv')
data=data.iloc[:,1:]
#查找数据集中缺失值
data.isnull().sum()

在这里插入图片描述
从结果中可以看到message这一项有29个缺失值,association_to_offender中有104个缺失值, champion_name中有104个缺失值。因为我们关心的是被举报人的聊天记录所以association_to_offender这一项的缺失值对数据分析的影响最大,要先对该字段中的缺失值进行处理。在后面对数据集的应用中会针对每种情况对不同缺失值做相应的处理。

#删除缺失值
data['association_to_offender'].dropna(inplace=True)
#打印数据框前十条记录
data.head(10)

在这里插入图片描述

#打印总游戏对局数
print('Number of chatlogs: {}'.format((data['chatlog_id'].nunique())))
#打印总聊天记录数
print('Number of records: {}'.format(data.shape[0]))

在这里插入图片描述
在这里插入图片描述
该数据集中共包含10058场游戏对局其中有近170万条聊天记录。到这里读者应该就对我们的数据集有了一个大致的了解。

因为我们拿到该数据集,最感兴趣的还是被举报玩家的行为,所以我们首先要把被举报玩家的聊天记录单独提取出来。然后我首先想到的一个问题就是使用哪些英雄的玩家被举报的次数更多呢?

#把被举报玩家的聊天记录提取出来
offender_df=data[data['association_to_offender']=='offender'
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值