输入敌方阵容、己方阵容和你的号位,基于 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- 打开 https://stratz.com/api
- 用 Steam 登录
My Tokens→Show Token Information- 复制
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,尤其是:补充英雄别名、改进打分权重、新增功能。
数据来源 Stratz。本项目与 Valve / Stratz 无官方关联。