Skip to content

CyborgV/dota_pick

Repository files navigation

Dota 2 选英雄助手 · Stratz 版

输入敌方阵容、己方阵容和你的号位,基于 Stratz 高分段大样本数据,一键给出按「综合分」排序的英雄推荐,并拆解每个推荐里有多少来自克制、多少来自协同

BP 阶段别再凭感觉。这个小工具用天梯高分段(Divine + Immortal)的真实对位数据告诉你这把该选谁,支持中文名 / 外号 / 英文混输。

✨ 特性

  • 克制:matchUp.vs,高分段大样本(动辄几千上万场),不是几十场的小样本噪声。
  • 协同:matchUp.with,选英雄时把「己方配合」也算进去。
  • 真实 1-5 号位:用 winWeek + 位置过滤,区分核心 / 辅助,而非笼统的上中下路。
  • 样本可靠性收缩:用 场次 / (场次 + K) 给每条数据打可信度折扣,小样本高胜率不会带偏推荐。
  • 增量打分:克制 / 协同算的是「相对该英雄自身基准胜率的增减」,剥离「这英雄本身就强」的因素。
  • 中文名 / 外号识别:别名表 + 精确 / 子串 / 模糊匹配,「小牛」「撼地者」「es」都认得;歧义时让你选。
  • 纯本地、秒级响应:数据缓存在本地,推荐计算是 numpy 矩阵运算,几十微秒出结果。
  • 图形界面 + 命令行双版本。

📦 安装

需要 Python 3.8+。

git clone https://github.com/CyborgV/dota_pick.git
cd dota_pick
pip install -r requirements.txt

🔑 获取 Stratz Token(免费)

  1. 打开 https://stratz.com/api
  2. 用 Steam 登录
  3. My TokensShow Token Information
  4. 复制 eyJ... 开头的 token

然后任选一种方式提供 token:

  • 复制 .env.example.env,把 token 填进去;或
  • 设环境变量 STRATZ_TOKEN=eyJ...;或
  • 直接运行图形界面,首次会弹窗让你粘贴(会自动写入 .env)。

token 仅本地使用,不会上传到任何第三方。.env 已在 .gitignore 中,不会被提交。

🚀 使用

图形界面(推荐)

Windows 下双击 start.bat,或:

python draft_gui.py

在「敌方英雄 / 己方英雄」里输入英雄(中文名 / 外号 / 英文,逗号分隔),选号位,点「推荐」。

命令行

python dota_pick_stratz.py                     # 交互式推荐
python dota_pick_stratz.py --refresh           # 强制刷新数据
python dota_pick_stratz.py --bracket DIVINE_IMMORTAL
python dota_pick_stratz.py --explain 人马 小鱼  # 看两个英雄之间的详细对位数据
python dota_pick_stratz.py --diagnose          # 查看数据覆盖率

首次运行会从 Stratz 拉取数据建表(约一分钟,支持断点续传),之后缓存 24 小时内秒开。

输出示例:

推荐英雄        综合分    胜率    克制    协同
钢背兽          0.182   0.541  +0.031  +0.012
...
  • 综合分:排序依据
  • 胜率:该英雄在你所选号位的胜率
  • 克制:专门针对敌方阵容带来的胜率增量
  • 协同:与己方阵容配合带来的胜率增量

🧠 推荐分怎么算

综合分 = base_weight × (位置胜率 − 平均位置胜率) + 克制贡献 + synergy_weight × 协同贡献

其中克制 / 协同贡献 = 增量胜率 × 样本可靠性,可靠性 = 场次 / (场次 + K)(默认 K=50)。 可通过 --base-weight --synergy-weight --shrink-k 调参。

📂 项目结构

文件 说明
dota_pick_stratz.py 核心:建表 + 推荐算法 + 命令行交互
draft_gui.py Tkinter 图形界面,复用核心逻辑
aliases.py 英雄中文名 / 外号 → Stratz 英文名映射表
start.bat Windows 一键启动图形界面

运行时生成的 stratz_cache.npz / stratz_meta.json 等为本地缓存,不纳入版本管理。

⚠️ 局限

  • 只看英雄层面的统计关系,不懂你的具体打法、装备细节或队友水平。
  • 数据是版本快照,大改动后用 --refresh 重新拉取。
  • 它是辅助决策,给你一个有数据支撑的起点,最终怎么选还得结合阵容思路和你的英雄池。

🤝 贡献

欢迎提 PR / issue,尤其是:补充英雄别名、改进打分权重、新增功能。

📄 License

MIT

数据来源 Stratz。本项目与 Valve / Stratz 无官方关联。

About

Dota 2 选英雄助手 · Stratz 版:基于高分段大样本数据的 BP 推荐工具(克制+协同+真实1-5号位,支持中文名/外号)

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages