遇见数据集

adhitsamonkar/CS2CD.Counter-Strike_2_Cheat_Detection

收藏
Hugging Face2025-12-23 更新2026-03-29 收录
官方服务:

资源简介:

--- license: cc-by-4.0 language: - en tags: - Game - Counter-Strike - CS2 - Counter-Strike 2 - Video Game - Cheat Detection - Gameplay pretty_name: Counter-Strike 2 Cheat Detection size_categories: - n<1K --- # Counter Strike 2 Cheat Detection Dataset ## Overview The **CS2CD (Counter-Strike 2 Cheat Detection)** dataset is an anonymised dataset comprised of Counter-Strike 2(CS2) gameplay at a variety of skill-levels with cheater annotations. This dataset contains 478 CS2 matches with no cheater present, and 317 matches CS2 matches with at least one cheater present. ## Dataset structure The dataset is partitioned into data with at least one cheater present, and data with no cheaters present. <div style="border:1px solid #ccc; padding: 10px; border-radius: 5px; background-color: #fff3cd; color: #000;"> <p><strong style="color: #000">⚠️ Warning: </strong>Data containing no cheaters has not been verified</p> <p>Only files, containing at least one VAC(Valve Anti-cheat)-banned player, have been manually labelled and verified. Hence, <strong style="color: #000">cheaters may be present in the data without cheaters</strong>.</p> <p>When examining a subset containing 50 data points (demos) with no VAC-banned players, it was discovered that in 97.2% of players in these matches were not presenting any cheater-like behaviour. When examining a subset of 50 data points (demos) in the set of matches with with at least one VAC-banned player, it was discovered that the label precission of the "not cheater" label was 55.6%. This is possibly due to CS2 using <a href="https://help.steampowered.com/en/faqs/view/00EF-D679-C76A-C185" target="_blank" style="color: #007bff; text-decoration: underline;">trust factor match making</a>.</p> <p>Hence, it was decided, that resources were best spent with labeling data containing at least one VAC-banned player.</p> <p>For more information regarding the data collection see <a href="https://github.com/Pinkvinus/CS2-demo-scraper/blob/main/Research_project___Counter_Strike_2_dataset_with_labels.pdf" target="_blank" style="color: #007bff; text-decoration: underline;">Counter-Strike 2 Game data collection with cheat labelling</a> by Mille Mei Zhen Loo & Gert Lužkov.</p> </div> ### Root folder - `no_cheater_present` : Folder containing data where no cheaters are present. - `with_cheater_present` : Folder containing data with at least one cheater present. - `README.md`: This documentation file ### Data files Each data point(counter strike match) is captured in 2 files: | Filetype | Sorting |Data Description | |----------|---------| -------------| | `.csv` | Ticks | The data is contained as a series of events, also known as ticks. Each tick has 10 rows containing data on the 10 players. | | `.json` | Events | The data is stored by the event type. Each occurrence of an event consequently stores the tick, in which the event occurred. Note, that this file also contains general game information, such as the cheater labeling, map, and server settings. | ## Loading dataset The following piece of code loads a single data point in the dataset. The resulting types are the same as if they were a demo parsed by demoparser2. ```python import pandas as pd import json filepath = "Data/no_cheater_present/0" # Loading csv tick data as a pd.DataFrame match_0_ticks = pd.read_csv(filepath_or_buffer=filepath+".csv.gz", compression="gzip") # Loading json event data a list of tuples (str, pd.Dataframe) def json_2_eventlist(filepath:str) -> list[tuple[str, pd.DataFrame]]: with open(filepath, "r") as f: json_data = json.load(f) data = [] for key, value in json_data.items(): if isinstance(value, list): df = pd.DataFrame(value) data.append((key, df)) return data match_0_events = json_2_eventlist(filepath=filepath+".json") ``` ## Data source The data is scraped from the website [csstats.gg](https://csstats.gg/) using the `ALL MATCHES` page as an entry point for scraping. This resulted in NUMBER `.dem` files. ## Data processing Due to `.dem` files containing sensitive information regarding the users. the data required anonymisation before publishing. This meant extracting the data from the `.dem` files and censoring sensitive data. In order to extract the data from these files the python library demoparser2 was used[[github](https://github.com/LaihoE/demoparser)][[pypi](https://pypi.org/project/demoparser2/)]. The demoparser parses events and ticks as two separate data types: - events : `list[tuple[str, pd.DataFrame]]` with the string describing the event type. - tick : `pd.DataFrame` Loading of the data as recommended in the section "[Loading dataset](#loading-dataset)" returns these types as well. ### Data anonymisation The following is the complete list of **data removed** from the dataset: - `crosshair_code` - `player_name` - `player_steamid` - `music_kit_id` - `leader_honors` - `teacher_honors` - `friendly_honors` - `agent_skin` - `user_id` - `active_weapon_skin` - `custom_name` - `orig_owner_xuid_low` - `orig_owner_xuid_high` - `fall_back_paint_kit` - `fall_back_seed` - `fall_back_wear` - `fall_back_stat_track` - `weapon_float` - `weapon_paint_seed` - `weapon_stickers` - `xuid` - `networkid` - `PlayerID` - `address` - `name` - `user_name` - `victim_name` - `attacker_name` - `assister_name` - `chat_message` The following data is the complete list of **altered data** in the dataset: - `steamid` - `user_steamid` - `attacker_steamid` - `victim_steamid` - `active_weapon_original_owner` - `assister_steamid` - `approximate_spotted_by` Data added from scraping process: - `map` - `avg_rank` - `server` - `match_making_type` - `cheater` ## Usage notes - The dataset is formated in UTF-8 encoding. - Researchers should **cite this dataset appropriately** in publications - In the case that all players from a single team quits the match, a single bot is spawned to fill the empty team. This may result in kills where no steamid is present. This is due to the bot not having a steamid. ## Applications CS2CD is well suited for the following tasks - Cheat detection - Player performance prediction - Match outcome prediction - Player behaviour clustering - Weapon effectiveness analysis - Strategy analysis ## Acknowledgements A big heartfelt thanks to [Paolo Burelli](http://paoloburelli.com/) for supervising the project.

--- 许可证:CC BY 4.0 语言: - 英语 标签: - 游戏 - 反恐精英 - CS2 - 反恐精英2 - 电子游戏 - 作弊检测 - 游戏玩法 显示名称:反恐精英2作弊检测数据集 样本规模类别:n<1K(样本量小于1000) --- # 反恐精英2作弊检测数据集(CS2CD) ## 概述 **CS2CD(反恐精英2作弊检测,Counter-Strike 2 Cheat Detection)数据集**是一个匿名化数据集,涵盖了不同竞技水平的《反恐精英2》(CS2)对局数据,并附带作弊者标注信息。本数据集包含478场无作弊者的CS2对局,以及317场至少存在一名作弊者的CS2对局。 ## 数据集结构 数据集被划分为“存在作弊者”与“无作弊者”两类数据。 <div style="border:1px solid #ccc; padding: 10px; border-radius: 5px; background-color: #fff3cd; color: #000;"> <p><strong style="color: #000">⚠️ 警告:</strong>无作弊者的数据尚未经过验证</p> <p>仅包含至少一名VAC(Valve反作弊,Valve Anti-cheat)封禁玩家的文件经过人工标注与验证。因此,<strong style="color: #000">无作弊者的数据中可能仍存在作弊者</strong>。</p> <p>对50个无VAC封禁玩家的对局(demo文件)子集进行检查后发现,这些对局中97.2%的玩家未表现出任何作弊类行为。对50个包含至少一名VAC封禁玩家的对局子集进行检查后发现,“非作弊者”标注的标注精度为55.6%。这一现象可能源于CS2采用的<strong>信任因子匹配系统(trust factor matchmaking)</strong>,相关说明可参考<a href="https://help.steampowered.com/en/faqs/view/00EF-D679-C76A-C185" target="_blank" style="color: #007bff; text-decoration: underline;">官方文档</a>。</p> <p>因此,团队决定将标注资源优先投入到包含至少一名VAC封禁玩家的数据上。</p> <p>如需了解更多数据收集相关信息,请参阅Mille Mei Zhen Loo与Gert Lužkov撰写的<a href="https://github.com/Pinkvinus/CS2-demo-scraper/blob/main/Research_project___Counter_Strike_2_dataset_with_labels.pdf" target="_blank" style="color: #007bff; text-decoration: underline;">《Counter-Strike 2 Game data collection with cheat labelling》</a>。</p> </div> ### 根目录 - `no_cheater_present`:存储无作弊者对局数据的文件夹 - `with_cheater_present`:存储存在至少一名作弊者对局数据的文件夹 - `README.md`:本文档文件 ### 数据文件 每个数据点(对应一场《反恐精英》对局)以两个文件存储: | 文件格式 | 排序依据 | 数据说明 | |----------|---------| -------------| | `.csv` | 游戏帧(Ticks) | 数据以一系列事件(亦称游戏帧)的形式存储。每个游戏帧包含10行数据,对应10名玩家的信息。 | | `.json` | 事件类型 | 数据按事件类型存储。每个事件的记录都会附带该事件发生的游戏帧编号。此外,该文件还包含对局的通用信息,例如作弊者标注、地图名称与服务器设置等。 | ## 数据集加载 以下代码示例可加载数据集中的单个数据点,最终返回的数据类型与使用`demoparser2`解析demo文件得到的结果一致。 python import pandas as pd import json filepath = "Data/no_cheater_present/0" # 将CSV格式的游戏帧数据加载为pandas.DataFrame对象 match_0_ticks = pd.read_csv(filepath_or_buffer=filepath+".csv.gz", compression="gzip") # 将JSON格式的事件数据加载为元组列表(字符串,pandas.DataFrame) def json_2_eventlist(filepath:str) -> list[tuple[str, pd.DataFrame]]: with open(filepath, "r") as f: json_data = json.load(f) data = [] for key, value in json_data.items(): if isinstance(value, list): df = pd.DataFrame(value) data.append((key, df)) return data match_0_events = json_2_eventlist(filepath=filepath+".json") ## 数据来源 本数据通过`ALL MATCHES`页面作为爬取入口,从<a href="https://csstats.gg/" target="_blank">csstats.gg</a>网站抓取获得,最终得到了NUMBER个`.dem`格式文件。 ## 数据处理 由于`.dem`文件包含用户的敏感信息,因此在发布前需要对数据进行匿名化处理,即从`.dem`文件中提取数据并对敏感信息进行脱敏。 为了从这些文件中提取数据,我们使用了Python库`demoparser2`[[github](https://github.com/LaihoE/demoparser)][[pypi](https://pypi.org/project/demoparser2/)]。该库可将数据解析为两种独立的数据类型: - 事件数据:`list[tuple[str, pd.DataFrame]]`,其中字符串用于描述事件类型 - 游戏帧数据:`pd.DataFrame` 按照“数据集加载”章节中的建议加载数据时,将返回与上述一致的数据类型。 ### 数据匿名化处理 以下为<strong>已移除的数据字段</strong>完整列表: - `crosshair_code`(准星代码) - `player_name`(玩家名称) - `player_steamid`(玩家SteamID) - `music_kit_id`(音乐套装ID) - `leader_honors`(队长荣誉) - `teacher_honors`(导师荣誉) - `friendly_honors`(友好荣誉) - `agent_skin`(探员皮肤) - `user_id`(用户ID) - `active_weapon_skin`(当前武器皮肤) - `custom_name`(自定义名称) - `orig_owner_xuid_low`(原始所有者XUID低位) - `orig_owner_xuid_high`(原始所有者XUID高位) - `fall_back_paint_kit`(备用涂装套件) - `fall_back_seed`(备用种子值) - `fall_back_wear`(备用磨损度) - `fall_back_stat_track`(备用统计追踪) - `weapon_float`(武器磨损度) - `weapon_paint_seed`(武器涂装种子值) - `weapon_stickers`(武器贴纸) - `xuid`(XUID) - `networkid`(网络ID) - `PlayerID`(玩家ID) - `address`(地址) - `name`(名称) - `user_name`(用户名) - `victim_name`(受害者名称) - `attacker_name`(攻击者名称) - `assister_name`(助攻者名称) - `chat_message`(聊天消息) 以下为<strong>已进行脱敏修改的数据字段</strong>完整列表: - `steamid`(SteamID) - `user_steamid`(用户SteamID) - `attacker_steamid`(攻击者SteamID) - `victim_steamid`(受害者SteamID) - `active_weapon_original_owner`(当前武器原始所有者) - `assister_steamid`(助攻者SteamID) - `approximate_spotted_by`(近似被发现者) 爬取过程中新增的数据字段: - `map`(地图名称) - `avg_rank`(平均竞技段位) - `server`(服务器信息) - `match_making_type`(匹配模式类型) - `cheater`(作弊者标注) ## 使用说明 - 本数据集采用UTF-8编码格式。 - 研究人员在发表成果时应<strong>恰当引用本数据集</strong>。 - 若某支队伍的所有玩家均退出对局,系统会生成单个机器人以填补空缺队伍。由于机器人没有SteamID,因此可能会出现无SteamID的击杀记录。 ## 应用场景 CS2CD数据集适用于以下任务: - 作弊检测 - 玩家竞技表现预测 - 对局胜负结果预测 - 玩家行为聚类分析 - 武器效能分析 - 战术策略分析 ## 致谢 衷心感谢<a href="http://paoloburelli.com/" target="_blank">Paolo Burelli</a>为本项目提供的指导。

提供机构:
adhitsamonkar
二维码
社区交流群
二维码
科研交流群
商业服务