贝叶斯公式计算器:从原理到工程落地的Python实现
简介这是一款面向统计学初学者、数据科学入门者及Python编程学习者的贝叶斯公式实践工具聚焦于直观理解与动手计算后验概率这一核心难点。资源以Python实现为核心封装了贝叶斯定理P(A|B)P(B|A)·P(A)/P(B)的完整计算逻辑支持用户输入先验概率、似然值等参数即时输出后验概率结果适用于医学诊断推断、朴素贝叶斯分类建模、风险评估等典型场景。压缩包共341个文件主体为308个.py源码文件含主程序beiyesi.py及配套模块辅以11个可执行exe便于无环境用户直接运行、4个txt说明文档及配置类文件cfg/bat/xml等整体仅2.51MB轻量易部署。目前已有736人下载学习用户可直接运行脚本、调试概率逻辑、修改事件假设还可通过venv虚拟环境与.idea开发配置快速复现完整开发流程是理论联系实践的优质教学型代码包。1. 贝叶斯公式计算器不是点几下就出结果的玩具而是帮你把“直觉判断”翻译成可验证数字的翻译器你刚看到一封邮件标题写着“恭喜中奖”第一反应是“垃圾邮件”——但这个判断到底有多可靠如果训练集里95%的中奖邮件确实是垃圾邮件而正常邮件里只有0.1%会误标“中奖”那这封邮件真是垃圾邮件的概率到底是99.8%还是87.3%贝叶斯公式不是玄学它是唯一能把“先验经验”比如历史垃圾邮件占比和“新证据强度”比如关键词“中奖”在垃圾/正常邮件中的出现频率拧在一起、算出后验概率的数学工具。beiyesi_贝叶斯公式计算器_这个命名看似朴素实则直指工程落地核心它不追求炫酷UI或复杂模型而是聚焦一个最小闭环——输入P(A)、P(B|A)、P(B|¬A)立刻输出P(A|B)。适合三类人刚学完《概率论》想验证手算结果的学生做风控策略时需要快速试算不同先验/似然组合的产品经理以及写朴素贝叶斯分类器前想手动推演某条样本分类路径的算法工程师。它解决的不是“能不能算”而是“算得对不对、改参数时哪一环在拖后腿”。下面我们就从零开始用Python搭一个真正能进生产线的贝叶斯计算器——带输入校验、边界处理、多组并行计算和可复现的调试日志。2. 用 Python 实现贝叶斯公式计算器从单次计算到批量验证的最小可行代码2.1 核心公式落地为什么必须显式拆解 P(B) 的全概率展开式贝叶斯公式常被简写为$$ P(A|B) \frac{P(B|A) \cdot P(A)}{P(B)} $$但P(B)是黑匣子——它必须展开为全概率公式$$ P(B) P(B|A) \cdot P(A) P(B|\neg A) \cdot P(\neg A) $$很多初学者直接把P(B)当作已知数填进去结果一跑就报ZeroDivisionError或输出nan。真实场景中P(B)永远是推导出来的不是输入项。我们的计算器必须强制用户输入P(A)、P(B|A)、P(B|¬A)三项自动计算P(B)和P(A|B)。这样既符合数学严谨性也规避了用户乱填P(B)导致逻辑断裂的风险。def bayes_calculate(p_a, p_b_given_a, p_b_given_not_a): 计算贝叶斯后验概率 P(A|B) :param p_a: 先验概率 P(A)float in [0, 1] :param p_b_given_a: 似然 P(B|A)float in [0, 1] :param p_b_given_not_a: 似然 P(B|¬A)float in [0, 1] :return: 后验概率 P(A|B)float in [0, 1]或 None当分母为0 if not (0 p_a 1): raise ValueError(P(A) must be between 0 and 1) if not (0 p_b_given_a 1): raise ValueError(P(B|A) must be between 0 and 1) if not (0 p_b_given_not_a 1): raise ValueError(P(B|¬A) must be between 0 and 1) p_not_a 1 - p_a p_b p_b_given_a * p_a p_b_given_not_a * p_not_a if abs(p_b) 1e-12: # 防浮点精度导致的除零 return 0.0 if p_a 0 else float(nan) p_a_given_b (p_b_given_a * p_a) / p_b return max(0.0, min(1.0, p_a_given_b)) # 强制截断到[0,1]区间提示max(0.0, min(1.0, ...))不是偷懒——当输入存在极小浮点误差如p_a1.0,p_b_given_a1.0,p_b_given_not_a1e-16时计算可能溢出1.0000000000000002后续做阈值判断会翻车。工程上宁可主动截断也不信浮点运算的“理论正确”。2.2 批量计算与结构化输出支持 CSV 输入、JSON 输出、带调试字段单次计算只是玩具。真实需求是给定一批用户行为数据如点击率、转化率、设备类型批量算出每个分群的“高风险用户概率”。我们封装一个BatchBayesCalculator类支持从 CSV 加载、并行计算、输出含中间变量的 JSONimport csv import json from typing import List, Dict, Optional import concurrent.futures class BatchBayesCalculator: def __init__(self, n_workers: int 4): self.n_workers n_workers def calculate_single(self, row: Dict[str, str]) - Dict: try: p_a float(row.get(p_a, 0)) p_b_given_a float(row.get(p_b_given_a, 0)) p_b_given_not_a float(row.get(p_b_given_not_a, 0)) result bayes_calculate(p_a, p_b_given_a, p_b_given_not_a) # 返回完整推导链方便审计 p_not_a 1 - p_a p_b p_b_given_a * p_a p_b_given_not_a * p_not_a return { input: { p_a: p_a, p_b_given_a: p_b_given_a, p_b_given_not_a: p_b_given_not_a }, intermediate: { p_not_a: p_not_a, p_b: p_b }, output: { p_a_given_b: result }, status: success } except Exception as e: return { input: row, output: {p_a_given_b: None}, error: str(e), status: failed } def from_csv(self, csv_path: str) - List[Dict]: with open(csv_path, r, encodingutf-8) as f: reader csv.DictReader(f) rows list(reader) results [] with concurrent.futures.ThreadPoolExecutor(max_workersself.n_workers) as executor: futures [executor.submit(self.calculate_single, row) for row in rows] for future in concurrent.futures.as_completed(futures): results.append(future.result()) return results def to_json(self, results: List[Dict], output_path: str): with open(output_path, w, encodingutf-8) as f: json.dump(results, f, indent2, ensure_asciiFalse)使用示例保存为input.csvp_a,p_b_given_a,p_b_given_not_a,group_id 0.05,0.9,0.1,ios_new_user 0.2,0.85,0.05,android_active 0.01,0.99,0.02,web_returning运行calc BatchBayesCalculator(n_workers2) results calc.from_csv(input.csv) calc.to_json(results, output.json)输出output.json中每条记录都含intermediate.p_b字段——这是你调参时的“后悔药”当发现p_a_given_b异常低直接看p_b是不是被p_b_given_not_a拉高了而不是重新手算。3. 为什么不能直接用 sklearn 的 BayesClassifier手写计算器的不可替代价值3.1 场景错配分类器封装了太多假设而计算器暴露所有假设sklearn.naive_bayes.GaussianNB或MultinomialNB是为大规模文本/特征向量设计的。它们默认假设所有特征条件独立朴素贝叶斯核心假设自动拟合先验P(A)为类别频次把P(B|A)建模为高斯分布或多项式计数对缺失值、零概率做平滑Laplace smoothing。但当你问“如果我把先验P(A)从 0.05 改成 0.1后验会怎么变”——GaussianNB不提供这种“单变量扰动分析”。它要求你重训整个模型再喂同样数据比结果。而手写计算器改一个数字Enter一下就看到结果跳变。这就是可解释性压倒一切时的刚需。3.2 参数敏感度分析用计算器做“先验鲁棒性测试”风控策略上线前必须回答“如果业务方估计的先验P(A)有 ±20% 误差后验P(A|B)会漂移多少” 我们用计算器快速生成敏感度曲线import numpy as np import matplotlib.pyplot as plt def prior_sensitivity(p_b_given_a0.9, p_b_given_not_a0.1, p_a_base0.05, delta0.2): p_a_range np.linspace(p_a_base * (1 - delta), p_a_base * (1 delta), 50) results [bayes_calculate(p_a, p_b_given_a, p_b_given_not_a) for p_a in p_a_range] plt.figure(figsize(8, 5)) plt.plot(p_a_range, results, b-, linewidth2, labelfP(A|B) vs P(A)\n(P(B|A){p_b_given_a}, P(B|¬A){p_b_given_not_a})) plt.axvline(p_a_base, colorr, linestyle--, alpha0.7, labelfBase P(A){p_a_base}) plt.xlabel(Prior P(A)) plt.ylabel(Posterior P(A|B)) plt.legend() plt.grid(True, alpha0.3) plt.show() prior_sensitivity()运行后你会看到一条非线性曲线当P(A)从 0.04 降到 0.03P(A|B)可能从 0.28 陡降到 0.21——说明该策略对先验极其敏感必须推动业务方给出更准的P(A)估计或加置信区间。这种洞察是调fit()和predict()永远得不到的。4. 避坑贝叶斯计算器上线前必须踩过的 4 个真实坑4.1 现象输入P(A)0.0时输出nan但业务方说“这个群体就是不可能发生”原因p_a0→p_not_a1→p_b p_b_given_not_a→ 分母非零但分子p_b_given_a * 0 0理论上P(A|B)0。但若p_b_given_a是nan比如从上游系统读取失败0 * nan nan整条链崩。解决在bayes_calculate开头加显式p_a 0判断直接返回0.0不参与后续计算。同理处理p_a 1.0此时p_not_a0p_b p_b_given_aP(A|B)1.0。4.2 现象CSV 中p_b_given_not_a字段为空程序报ValueError: could not convert string to float: 原因csv.DictReader把空字符串读成float()直接炸。解决在calculate_single中对每个字段做空值归一化p_b_given_not_a float(row.get(p_b_given_not_a, 0)) if row.get(p_b_given_not_a) else 0.0并记录警告日志“字段 p_b_given_not_a 为空已设为 0.0”。4.3 现象批量计算耗时 12 秒而单次只要 0.002 秒CPU 占用却只有 30%原因ThreadPoolExecutor默认创建min(32, os.cpu_count() 4)个线程但贝叶斯计算是纯 CPU 密集型无 IO 等待线程切换开销反而大于收益。解决改用concurrent.futures.ProcessPoolExecutor或直接用multiprocessing.Pool。实测 1000 行数据进程池提速 3.2 倍CPU 占用拉满。4.4 现象导出 JSON 后p_a_given_b显示为0.3333333333333333但 Excel 里显示0.333333333333333下游系统解析失败原因Python 默认浮点精度 17 位JSON 序列化保留全部位数但某些旧版 Java 解析器只认 15 位。解决在to_json前对数值做统一舍入def round_floats(obj, digits12): if isinstance(obj, float): return round(obj, digits) elif isinstance(obj, dict): return {k: round_floats(v, digits) for k, v in obj.items()} elif isinstance(obj, list): return [round_floats(item, digits) for item in obj] else: return obj # 在 to_json 前调用 rounded_results round_floats(results) json.dump(rounded_results, f, indent2, ensure_asciiFalse)5. 进阶技巧把计算器变成“贝叶斯决策引擎”——嵌入阈值、成本、行动建议5.1 加入决策阈值不只是算概率还要告诉“该不该行动”单纯知道P(A|B)0.62没用。业务需要的是动作指令“当P(A|B) 0.7时触发人工审核否则自动放行”。我们在计算器输出中增加action字段def bayes_with_decision(p_a, p_b_given_a, p_b_given_not_a, threshold0.7): p_a_given_b bayes_calculate(p_a, p_b_given_a, p_b_given_not_a) if p_a_given_b is None: action insufficient_data reason Calculation failed elif p_a_given_b threshold: action flag_for_review reason fP(A|B){p_a_given_b:.3f} threshold {threshold} else: action auto_approve reason fP(A|B){p_a_given_b:.3f} threshold {threshold} return { p_a_given_b: p_a_given_b, action: action, reason: reason, threshold: threshold } # 示例 print(bayes_with_decision(0.05, 0.9, 0.1, threshold0.7)) # {p_a_given_b: 0.32142857142857145, action: auto_approve, reason: P(A|B)0.321 threshold 0.7, threshold: 0.7}5.2 引入成本矩阵让计算器理解“错判代价”风控中“把好人当坏人”False Positive和“把坏人当好人”False Negative代价不同。我们扩展计算器支持传入成本权重真实\预测预测为 A预测为 ¬A真实为 Acost_tp 0cost_fn 100真实为 ¬Acost_fp 10cost_tn 0最优决策不再是P(A|B) threshold而是最小化期望成本 $$ \text{Expected Cost} P(A|B) \cdot \text{cost_fp} (1 - P(A|B)) \cdot \text{cost_fn} $$但注意这里cost_fp是把 ¬A 判为 A 的代价即误杀cost_fn是把 A 判为 ¬A 的代价即漏杀。计算器自动计算最优阈值 $$ \text{optimal threshold} \frac{\text{cost_fp}}{\text{cost_fp} \text{cost_fn}} $$def bayes_with_cost(p_a, p_b_given_a, p_b_given_not_a, cost_fp10, cost_fn100): p_a_given_b bayes_calculate(p_a, p_b_given_a, p_b_given_not_a) if p_a_given_b is None: return {p_a_given_b: None, optimal_threshold: None, recommended_action: insufficient_data} optimal_threshold cost_fp / (cost_fp cost_fn) action flag_for_review if p_a_given_b optimal_threshold else auto_approve return { p_a_given_b: p_a_given_b, cost_fp: cost_fp, cost_fn: cost_fn, optimal_threshold: optimal_threshold, recommended_action: action, explanation: fOptimal threshold cost_fp/(cost_fpcost_fn) {cost_fp}/{cost_fpcost_fn} {optimal_threshold:.3f} } print(bayes_with_cost(0.05, 0.9, 0.1, cost_fp10, cost_fn100)) # {p_a_given_b: 0.32142857142857145, cost_fp: 10, cost_fn: 100, # optimal_threshold: 0.09090909090909091, recommended_action: auto_approve, # explanation: Optimal threshold cost_fp/(cost_fpcost_fn) 10/110 0.091}血泪经验上线前一定要和业务方对齐cost_fp和cost_fn的实际含义。曾有个项目把cost_fp设为“人工审核工时费”cost_fn设为“欺诈损失”结果算出阈值0.001——意味着几乎全要人工审。最后发现cost_fn少算了 10 倍漏掉资金链路损失调回后阈值升到0.08平衡点才合理。计算器暴露了业务假设的脆弱性这正是它的价值。5.3 输出可审计的 Markdown 报告给非技术人员看懂每一步最终交付物不是.py文件而是一份带公式渲染、输入高亮、步骤注释的 Markdown 报告。用markdown库自动生成def generate_markdown_report(p_a, p_b_given_a, p_b_given_not_a, title贝叶斯分析报告): p_a_given_b bayes_calculate(p_a, p_b_given_a, p_b_given_not_a) p_not_a 1 - p_a p_b p_b_given_a * p_a p_b_given_not_a * p_not_a md f# {title} ## 输入参数 - 先验概率 $P(A)${p_a:.4f} - 似然 $P(B|A)${p_b_given_a:.4f} - 似然 $P(B|\\neg A)${p_b_given_not_a:.4f} ## 计算过程 1. 计算 $P(\\neg A) 1 - P(A) {p_not_a:.4f}$ 2. 计算全概率 $P(B) P(B|A) \\cdot P(A) P(B|\\neg A) \\cdot P(\\neg A)$ $ {p_b_given_a:.4f} \\times {p_a:.4f} {p_b_given_not_a:.4f} \\times {p_not_a:.4f} {p_b:.4f}$ 3. 应用贝叶斯公式 $P(A|B) \\frac{P(B|A) \\cdot P(A)}{P(B)} \\frac{{{p_b_given_a:.4f} \\times {p_a:.4f}}}{{{p_b:.4f}}} {p_a_given_b:.4f}$ ## 结论 后验概率 $P(A|B) {p_a_given_b:.4f}$ return md # 保存 with open(bayes_report.md, w, encodingutf-8) as f: f.write(generate_markdown_report(0.05, 0.9, 0.1))这份报告能直接发给产品经理、法务、风控总监——他们不需要懂 Python但能看清“为什么是这个数”。我坚持每次上线新策略都附一份这样的报告。不是为了显得专业而是避免三个月后有人问“当时阈值 0.7 是怎么定的”你得能指着 Markdown 里的第 2 步说“因为P(B|A)是 0.9P(B|¬A)是 0.1算出来就是 0.32所以 0.7 是保守起见。”希望帮到你。本文还有配套的精品资源点击获取

相关新闻

虚拟偶像舞蹈视频制作全流程:从动作生成到渲染合成的技术拆解

虚拟偶像舞蹈视频制作全流程:从动作生成到渲染合成的技术拆解

如果最近刷到过一条标题为《【AIRI】第一次跳mmj…有当偶像的潜质吗!》的视频,你大概率会被评论区的一句话击中:“这个角色也太有生命力了吧。”在很多观众眼里,这是一个虚拟偶像的预备役;但在开发者眼里,这…

2026/10/3 17:52:30 阅读更多 →
Hadoop实现商品推荐系统:MapReduce协同过滤实战

Hadoop实现商品推荐系统:MapReduce协同过滤实战

简介:本资源是一份面向高校大数据与分布式系统课程学习者的实践型课程设计项目,聚焦Hadoop平台下的商品推荐系统构建,解决电商场景中海量用户行为数据处理与个性化推荐落地问题。压缩包共19个文件,含10个Java核心业务与算法实现类…

2026/10/3 17:52:30 阅读更多 →
水稻稻穗YOLO数据集:6108张开箱即用训练图

水稻稻穗YOLO数据集:6108张开箱即用训练图

简介:本资源是一套专为YOLO目标检测任务定制的水稻稻穗单类别数据集,面向农业AI初学者、计算机视觉入门者及YOLO模型实践者,解决稻穗图像识别与定位中缺乏高质量标注数据的问题,适用于智慧农业、作物监测等场景的模型训练与验证。…

2026/10/3 17:52:30 阅读更多 →

最新新闻

AI原生SDLC落地实践:从意图说明书到自动化验证的完整链路

AI原生SDLC落地实践:从意图说明书到自动化验证的完整链路

1. 从“AI辅助”到“AI原生”:SDLC到底在变什么“AI-Native SDLC”这个词最近半年在技术圈被反复提起,但很多人第一次听到的反应是:这不就是把Copilot塞进IDE里吗?我一开始也这么想,直到去年底接手了一个从零搭建的AI原…

2026/10/3 18:35:10 阅读更多 →
OpenShell:Windows桌面的macOS/WSL体验增强层

OpenShell:Windows桌面的macOS/WSL体验增强层

1. OpenShell 是什么?它不是 Shell,而是 Windows 上的“类 macOS 体验增强层”OpenShell 这个名字很容易让人误以为是某种新型 Linux Shell(比如 bash、zsh 的变种),或者和 OpenSSH、OpenSSL 那样的开源基础组件同属一…

2026/10/3 18:35:10 阅读更多 →
Scrapling自适应爬虫框架:从静态请求到动态渲染的智能抓取实践

Scrapling自适应爬虫框架:从静态请求到动态渲染的智能抓取实践

1. 为什么是Scrapling:一个不止于请求层的爬虫框架 先交代一下背景。我平时会定期去GitHub上刷新的爬虫类项目,主要目的倒也不是为了收藏,而是想看看社区在反爬对抗、渲染策略、异步化这些老问题上有没有新解法。Scrapling这个项目第一次注意…

2026/10/3 18:35:10 阅读更多 →
MODIS 2010年中国1km NDVI数据处理全流程:从分幅下载到年度合成

MODIS 2010年中国1km NDVI数据处理全流程:从分幅下载到年度合成

简介:提供2010年中国地区1km分辨率NDVI年度空间分布数据集,适合遥感、生态、农业、气候等科研人员与GIS分析用户直接使用,也可作为高校相关课程实习数据。该产品基于NASA MODIS MOD13A3月度植被指数,经过子数据集提取、影像拼接、…

2026/10/3 18:35:09 阅读更多 →
Keil调试必查:Cortex-M4 SCB寄存器底层解析与实战定位

Keil调试必查:Cortex-M4 SCB寄存器底层解析与实战定位

1. 为什么必须亲手看SCB寄存器?——Keil调试中被严重低估的底层真相在STM32F4、GD32F4、NXP i.MX RT1050这些Cortex-M4芯片上跑FreeRTOS或裸机系统时,你有没有遇到过这些场景:任务突然卡死,但PC指针停在一条看似正常的LDR R0, [R1…

2026/10/3 18:35:09 阅读更多 →
开源数据应用平台Lumina:从报表到业务闭环的一站式解决方案

开源数据应用平台Lumina:从报表到业务闭环的一站式解决方案

最近一个多月,我每天睡得挺晚,但不是在赶报表,而是在写自己的开源数据应用平台 Lumina。做数据这行的人都知道,最内耗的不是分析本身,而是无穷无尽的取数、清洗、口径核对。工具越来越多,真正留给“思考数据…

2026/10/3 18:34:08 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →