信用风险评分卡建模全流程:从WOE编码到分数映射实战
简介基于机器学习的信用风险等级评分系统聚焦信用卡申请审批与信贷风控场景面向银行、消费金融及互联网金融从业者通过对申请人历史数据进行预处理、特征工程与建模输出可解释的风险等级评估结果辅助业务方科学决策。资源包共4个文件包括Python源码、Jupyter Notebook交互式脚本、训练数据csv及说明文档md整体大小18.19MB结构紧凑便于直接下载后按文档指引运行调试。学习热度方面已有149人学习下载适合正在搭建信用评分模型或准备入门金融风控的读者参考。内容覆盖完整建模流程自动识别数值/类别变量、标签编码与分箱处理并集成EDA单变量与多变量分析模型层面支持逻辑回归、随机森林、XGBoost等算法提供准确率、召回率、F1、AUC等指标以及混淆矩阵、ROC曲线、KS曲线可视化。同时结合toad评分卡工具可迁移为完整信用评分卡系统提升自动化审批效率满足监管可解释性要求。1. 信用风险等级评分系统一套能落地的完整建模流程信用风险等级评分是信贷、保险、租赁甚至企业应收管理里最常见的风控动作。网上讲算法的文章很多但真到动手阶段选型怎么定、变量怎么处理、分数怎么映射到等级很少有人一次说透。这套“基于机器学习信用风险等级评分系统”真正解决的问题是把一份原始信贷数据变成一套可解释、可上线、能对应到业务等级的评分卡而不是只给你一个黑匣子预测概率。适合正在做风控建模、想从评分卡转向机器学习、或者需要给业务方交付可解释规则的从业者。看完这份拆解你能顺着步骤走一遍数据清洗、WOE编码、模型训练到分数映射的完整链路。2. 模型选型与数据准备为什么评分卡要选逻辑回归2.1 逻辑回归、随机森林与XGBoost的取舍信用评分领域之所以长期以逻辑回归为底座核心原因不是它精度最高而是它的可解释性和稳定性。随机森林、XGBoost这类树模型在AUC上通常能压逻辑回归一头但在信用审批场景里监管要求必须说清楚“这个人为什么被拒”逻辑回归天然能满足这个诉求。实际项目里更常见的做法是先用树模型做变量筛选再用逻辑回归做最终评分卡两边互补。这套系统的设计思路就是这样模型训练部分同时保留逻辑回归和XGBoost的接口逻辑回归用于最终评分卡生成XGBoost用于对照验证效果。我在实际项目里也推荐这个组合理由有三点一是逻辑回归的系数可以直接换算成对应特征的加分幅度业务方容易接受二是树模型能自动处理非线性关系在特征筛选阶段能帮忙找到被忽略的交叉变量三是两套模型对比上线可以避免单一模型过拟合带来的误判。数据准备上首先要把样本定义清楚。评分卡建模的样本通常分为“观察期”和“表现期”观察期取过去6到12个月的特征数据表现期取其后3到6个月的还款表现。样本标签不是简单的“是否逾期”而是需要结合逾期天数、拖欠金额占比、历史还款记录做多维度定义。这套系统的默认标签规则是表现期内逾期超过90天记为坏客户逾期30天以内的记为边缘客户其余为好客户。2.2 候选特征池的构建原则特征工程的起点不是堆变量而是建立一个业务上说得通的候选池。常见的数据源包括用户基础信息年龄、性别、学历、婚姻状况、收入负债类月收入、负债收入比、征信类查询次数、逾期次数、授信额度使用率、行为类近6个月消费波动、还款提前天数均值。这里必须提醒一点特征和标签之间的时间窗口不能重叠。比如你用的是观察期内的消费数据标签必须取自观察期之后的还款表现否则就是用了未来信息模型在验证集上表现再好上线后也会大幅衰减。这套系统的特征池里专门做了时间切分配置feature_start_date和label_end_date之间留出至少90天的表现期算是一个很务实的细节。变量类型上区分数值型、有序分类和无序分类。年龄、收入这些直接入模前需要做分箱婚姻状况、职业这类无序分类用one-hot编码或者直接归并为“好/中/差”三档。缺失值处理在信贷数据里尤其重要征信数据源普遍存在字段缺失常见的做法是单独分箱把“缺失”本身当作一个信息等级而不是简单填充。3. 特征工程与WOE编码把原始字段变成可解释的模型输入3.1 分箱策略与边界处理评分卡建模里分箱是最基础也是影响最大的步骤。分箱的目的有三层第一把连续变量离散化降低模型的非线性拟合难度第二让极端值不再直接冲击模型第三每个分箱对应一个WOE值方便后续计算分数。分箱方式我一般分三步走。第一步用等频分箱做初始边界比如年龄字段按十分位切第二步检查每个箱内好坏样本占比如果出现某个箱的坏样本率为0需要和相邻箱合并第三步根据业务含义微调边界例如年龄的18到22岁、23到30岁、31到45岁、46到55岁、55岁以上这样既符合信贷业务常识又保证了单调性。import pandas as pd import numpy as np # 等频分箱函数把连续变量分成指定箱数并输出边界 def freq_binning(series, bins10): try: # pd.qcut 按分位数等频分箱duplicatesdrop 避免边界重复 cut, bins_edges pd.qcut(series, qbins, retbinsTrue, duplicatesdrop) return bins_edges except ValueError: # 如果数据分布极端导致无法分箱退化为等宽分箱 print(f字段 {series.name} 等频分箱失败改用等宽分箱) return np.linspace(series.min(), series.max(), bins 1) # 生成年龄字段的分箱边界 age_edges freq_binning(df[age], bins8) print(年龄分箱边界:, age_edges)这段代码的逻辑是优先用分位数分箱让每个箱内样本量近似相等避免某些箱样本过少导致WOE值不稳定。当数据分布极端比如大量相同值导致分位数分箱抛错时自动降级为等宽分箱。参数bins8表示分成8箱实际使用中可以根据变量分布调整信息量大的核心变量可以分到10到15箱次要变量控制在5箱以内。分箱完成后再人工检查边界是否符合业务常识。3.2 WOE与IV的计算实现WOEWeight of Evidence是评分卡的核心转换方式它表达的是“这个分箱内的坏客户比例相对于整体坏客户比例的高低”。公式是WOE ln(坏样本占比 / 好样本占比)。WOE为正说明该箱内坏客户浓度高于整体水平为负则相反。进入模型之前把原始字段替换成WOE值模型输出的每个系数乘上对应字段的WOE再累加换算成信用分。IVInformation Value用来衡量变量预测力等于每个分箱WOE乘以好坏占比差值后的累加。IV低于0.02的变量基本可以丢弃0.02到0.1之间为弱预测力0.1到0.3之间为中等0.3以上为强预测力。但IV值高不等于可以无脑入模还要看变量覆盖率、稳定性、业务含义是否通顺。def calc_woe_iv(df, feature, target): 计算单个特征的WOE和IV值 df: 数据框 feature: 分箱后的特征列名 target: 标签列名1为坏客户0为好客户 total_good df[target].value_counts().get(0, 0) total_bad df[target].value_counts().get(1, 0) grouped df.groupby(feature)[target].agg([count, sum]) grouped.columns [total, bad] grouped[good] grouped[total] - grouped[bad] # 计算好坏占比分母加 0.5 做平滑避免出现 0 导致取对数报错 grouped[bad_pct] (grouped[bad] 0.5) / (total_bad 0.5) grouped[good_pct] (grouped[good] 0.5) / (total_good 0.5) grouped[woe] np.log(grouped[bad_pct] / grouped[good_pct]) grouped[iv] (grouped[bad_pct] - grouped[good_pct]) * grouped[woe] return grouped[woe], grouped[iv].sum()这段代码的关键点在平滑参数0.5它的作用是避免某个分箱内好或坏客户数量为0时good_pct或bad_pct等于0导致np.log(0)报错。target列为1表示坏客户对应信贷业务里表现期逾期90天以上的样本。计算完成后iv.sum()就是该特征的整体IV值用来做变量筛选排序。4. 模型训练与评分映射把概率转换成分数卡4.1 训练集与验证集的切分策略数据切分的思路和一般机器学习任务不完全一样。评分卡模型除了要随机切分还必须考虑时间顺序。假设你手里的数据范围是2019年到2022年训练集最好用较早的年份比如2019到2020年验证集用较晚的年份2021到2022年这样能真实模拟“用过去预测未来”的线上场景。单纯随机切分会让模型无意中学习到时间趋势线上效果打折。切分比例我常用7:3同时保持好坏样本比例在训练集和验证集中大致一致用分层抽样实现。注意不要直接调用train_test_split默认的随机切分参数需要显式传入stratifyy和random_state保证每次实验可复现。from sklearn.model_selection import train_test_split # X_woe 是已经完成WOE编码后的特征矩阵y 是0/1标签 X_train, X_val, y_train, y_val train_test_split( X_woe, y, test_size0.3, stratifyy, random_state42 ) print(f训练集样本量: {X_train.shape[0]}, 验证集样本量: {X_val.shape[0]}) print(f训练集坏客户占比: {y_train.mean():.4f}, 验证集坏客户占比: {y_val.mean():.4f})stratifyy是这里最关键的参数它告诉切分函数在切分时维持标签的原始分布。如果不加这个参数恰好把大部分坏客户切到训练集或验证集都会导致模型评估失真。random_state42固定随机种子方便A/B实验对比。跑完这段代码可以看一眼训练集和验证集的坏客户占比是否接近差别超过0.5个百分点就要检查数据排序是否存在问题。4.2 逻辑回归训练与系数解读完成WOE编码之后进入模型训练阶段。逻辑回归在这个阶段要做的不是调复杂超参数而是控制好正则化强度避免系数爆炸。信贷数据经过WOE编码后特征之间的量纲已经统一但某些相关性强的变量仍然会带来多重共线性问题这里用L2正则化可以很好地稳定系数。from sklearn.linear_model import LogisticRegression model LogisticRegression( penaltyl2, C1.0, solverliblinear, class_weightbalanced, max_iter200 ) model.fit(X_train, y_train) print(模型截距:, model.intercept_[0]) for feature, coef in zip(X_train.columns, model.coef_[0]): print(f{feature}: {coef:.4f})参数C1.0是正则化强度的倒数C越小正则化越强、系数越向0收缩。如果验证集AUC比训练集低很多可以把C调小到0.5或0.1再试。class_weightbalanced是处理样本不均衡的快捷方式当坏客户占比低于10%时这个参数会自动调整类别权重让模型不会把所有样本都预测成好客户。solverliblinear适合中小规模数据收敛速度快数据量超过百万行可以换成lbfgs。max_iter200防止迭代次数不足导致模型未收敛。系数解读的逻辑回归输出需要结合WOE的方向一起看。如果某个字段的WOE值越大代表坏客户占比越高那对应系数就应该是负的表示该箱位会拉低信用分。这个方向必须和业务直觉一致如果有变量系数方向和业务理解相反优先检查WOE编码方向或数据是否泄露不要盲目调整数据。4.3 评分卡分数映射公式与等级划分评分卡输出概率后最后一步是把概率映射成业务可用的整数分数。业界用得最多的映射公式是Score Offset Factor * ln(Odds)其中Odds p / (1 - p)p是模型预测的坏客户概率。确定Offset和Factor需要业务上先约定两个锚点基准Odds对应的分数以及Odds翻倍时分数增加的幅度PDOPoint of Double Odds。常见约定是Odds为1:20时分数为600分Odds每翻一倍分数增加50分即PDO50。这段映射优先级很高因为模型输出的是概率业务方需要的是“多少分以上可以自动通过多少分以下直接拒绝”。分数映射不用每次都从头算可以写一个固定公式import math def prob_to_score(p, base_odds20, base_score600, pdo50): 将模型预测概率转换为标准评分卡分数 p: 模型预测的坏客户概率 base_odds: 基准Odds默认1:20 base_score: 基准Odds对应的分数默认600 pdo: Odds翻倍时分数增量默认50 odds p / (1 - p) factor pdo / math.log(2) offset base_score - factor * math.log(base_odds) score offset factor * math.log(odds) return round(score) # 示例预测坏客户概率为 0.03 sample_score prob_to_score(p0.03) print(f预测概率0.03对应的信用分数: {sample_score})pdo是整个评分映射里最值得关注的参数。PDO设置得越大分数对风险变化的敏感度越高实际银行常用PDO在40到60之间这个系统默认50是一个折中。映射完成后还要把分数切分到等级。比如低于480分定为D级直接拒绝480到580分定为C级人工复核580到680分定为B级通过但降低额度高于680分定为A级正常通过。切分阈值不是拍脑袋定的而是根据验证集里各分数段的坏客户率绘制KS曲线后选择拐点。5. 常见问题与排查五个必踩的坑5.1 模型AUC很高但分数区分度很差现象训练集AUC达到0.82按分数分档后发现高分段的坏客户率和低分段差别不大业务上完全没法用。原因最常见的是使用了未来信息比如把表现期内的还款行为作为特征参与训练。这种数据泄露会让AUC虚高但换到真实线上场景此时未来数据不存在模型立刻失效。另一个可能是样本标签定义过于宽松好客户里混入了大量事实上已经逾期的边缘客户。解决检查特征字段的时间窗口逐一确认每个特征是在观察期内计算的。用特征重要性和系数方向做人为审查凡是训练集效果奇好、但业务说不过去的特征先剔除再做一轮实验。5.2 WOE分箱出现非单调趋势且不合业务逻辑现象年龄字段分箱后WOE走势是18到25岁坏客户率高26到40岁低41到50岁又升高50岁以上再降低整体呈U型业务上说不通。原因分箱过细导致部分箱样本量不足WOE值受偶发坏客户影响大幅波动。或者样本本身存在选择偏差覆盖的客群结构和使用场景不一致。解决建议该字段做人工合并箱位让相邻的业务含义相似的箱合并再重新计算WOE。合并后如果U型趋势依旧存在需要结合业务方判断是否年龄和风险本来就是非线性关系此时可以考虑做交叉特征而不是强行追求单调性。5.3 线上评分分布和训练期漂移现象模型上线两周后发现用户平均分数比训练期高了30分原本设定600分为通过线现在大量边缘客户涌入通过区间。原因客群结构变化或风控策略收紧导致当前进件人群和建模时点不一致。如果建模样本里包含了审批通过后被拒绝的样本线上分数分布也会天然偏向高分段因为模型没见过这些拒绝人群。解决上线前必须记录训练集分数分布的均值和标准差监控系统里写入PSIPopulation Stability Index。PSI超过0.1需要关注超过0.25说明分布漂移严重要重新校准模型或做版本迭代。5.4 缺失值处理不当导致变量失效现象字段A在训练集缺失率5%模型系数显著上线后缺失率飙到40%该变量失去区分能力。原因线上数据源供应商变更或采集链路改动导致字段覆盖率下降。WOE编码时缺失单独分箱但缺失箱的WOE值在训练集和线上差异巨大。解决上线前评估每个变量的覆盖率波动容忍度对覆盖率低于80%的字段不直接入模或降低权重。缺失箱的WOE值需要设置上限比如不超过正负0.5避免极端WOE对分数造成过大冲击。5.5 模型过拟合到预处理逻辑而不是业务信号现象模型在开发集上验证集AUC有0.78但换一批新数据AUC骤降到0.62。原因分箱是在全量数据上做的然后才切分训练集和验证集导致验证集信息泄露到分箱过程中。这属于典型的预处理过拟合分箱边界和WOE值都包含了验证集信息。解决把分箱步骤放进交叉验证循环里每一折只基于训练折内数据做分箱和WOE编码再应用到验证折上。计算成本会上升但换来的泛化性提升非常值得。实际项目里我至少会用时间序列切分验证一轮而不是只看一次随机切分的结果。6. 进阶技巧模型监控与评分阈值校准评分卡不是一次性交付物上线之后要持续维护。很多团队把精力全放在建模阶段上线后无人跟进等发现问题时坏账率已经上去了。我养成的习惯是上线第一天就建立三张监控表日均分数分布趋势、各分数段坏客户率滚动变化、特征覆盖率波动。def calculate_psi(expected_dist, actual_dist): 计算PSI评估线上分数分布和训练期分布的偏移程度 expected_dist: 训练期各分箱的样本占比列表 actual_dist: 当前各分箱的样本占比列表 psi_value 0 for exp, act in zip(expected_dist, actual_dist): # 占比为0时用极小值替换避免除以0报错 exp exp if exp 0 else 1e-6 act act if act 0 else 1e-6 psi_value (exp - act) * math.log(exp / act) return psi_value # 分数区间分布示例 score_bins [480, 480-580, 580-680, 680] expected_pct [0.08, 0.32, 0.45, 0.15] actual_pct [0.05, 0.25, 0.50, 0.20] result calculate_psi(expected_pct, actual_pct) print(f当前PSI: {result:.4f})PSI大于0.25时不要急着重新训练模型先确认是客群结构变化还是数据质量问题。我曾经处理过一个案例PSI飙升的原因是外部数据源在两天内更新了查询次数的统计口径字段分布整体后移模型被动跟着变化。修正数据口径后PSI回落正常根本不需要重训。评分阈值校准方面几个关键动作。第一每月更新一次滚动坏客户率曲线把分数分档重新和实际表现挂钩。第二跟踪通过率如果评分分布稳定但通过率下降说明阈值之外的策略发生变化。第三关注增益曲线验证模型在人工干预较少的情况下是否仍然保持排序能力。这套系统的设计里还留了一个值得研究的方向用XGBoost的predict_proba输出作为参考特征拼入逻辑回归做两阶段建模。我在一个高逾期率的P2P场景里试过这种做法相比纯逻辑回归AUC提升约3个百分点。但代价是解释性下降需要额外为XGBoost输出做一份辅助说明文档我当时花了整整两天才把业务方说服。从那以后我每次做分数调整都强制走一遍全量回测连同分箱边界一起验证再给业务方出对比报告。希望这些拆解能帮你在信用评分的路上省一点摸索的时间。本文还有配套的精品资源点击获取

相关新闻

Unity C#战棋游戏源码解析:网格寻路与回合调度实战

Unity C#战棋游戏源码解析:网格寻路与回合调度实战

简介:这是一份面向计算机、通信、自动化等相关专业学生与开发者的C#毕业设计项目源码,基于Unity引擎实现一款小型战棋游戏,适合作为期末课程设计、课程大作业或毕业设计参考,也可供初学者与进阶者学习借鉴。压缩包共约2000个文件&…

2026/10/10 16:45:11 阅读更多 →
毛绒玩具打样不满意?毛绒绒平台的样品修改服务说明

毛绒玩具打样不满意?毛绒绒平台的样品修改服务说明

收到样品后发现与预期存在差距,是定制流程中的常见情况。毛绒绒平台为每位客户提供样品修改服务,支持针对脸型、配色、毛感等细节进行调整,基础修改包含在打样服务费用内。这项服务的边界在哪里,哪些调整属于基础范围,…

2026/10/10 16:45:11 阅读更多 →
Python+OpenCV手势识别源码实战:从环境搭建到手指计数避坑指南

Python+OpenCV手势识别源码实战:从环境搭建到手指计数避坑指南

简介:这份资源面向计算机视觉入门者与课程设计学生,提供一套基于Python与OpenCV的手势识别算法完整源码,帮助解决从摄像头采集到手势判定的全流程实现问题。压缩包共67个文件,约42.46MB,以30个py源码与26个pyc编译文件…

2026/10/10 16:45:11 阅读更多 →

最新新闻

Java入门指南:从零搭建环境到写出第一个实战项目

Java入门指南:从零搭建环境到写出第一个实战项目

很多朋友在刚接触Java时,最容易陷入的状态是“收藏了一堆教程,但打开IDE还是一脸懵”。说实话,Java入门这条路本身并不陡峭,真正劝退新手的往往是开始阶段的“三座大山”:环境装不明白、语法概念太抽象(尤其…

2026/10/10 17:33:51 阅读更多 →
从一句话到参数化CAD模型:text-to-cad实现方法与系统解析

从一句话到参数化CAD模型:text-to-cad实现方法与系统解析

这几年 AI 生成图片、生成代码早就不新鲜了,但你要是跟搞机械、搞建筑、搞工业设计的朋友聊起来,会发现大家都在盯一个更硬核的方向:直接把一句大白话变成一张能用的 CAD 模型。这个方向,社区里习惯叫它text-to-cad。听起来像是把…

2026/10/10 17:33:51 阅读更多 →
AI生成式设计工具复盘:从生产管线到可交付资产的产品化拆解

AI生成式设计工具复盘:从生产管线到可交付资产的产品化拆解

最近不少做设计的同行都在私下讨论一件事:某头部科技公司内部孵化的一个生成式设计工具,没有开发布会,没有铺天盖地的投放,却在游戏美术、3D 视觉和 UI 资产生产的小圈子里传得挺开。作为产品设计师,我把公开资料翻了一…

2026/10/10 17:33:51 阅读更多 →
Excel表格防随意打开:从文件加密到只读保护完整指南

Excel表格防随意打开:从文件加密到只读保护完整指南

办公室里几乎人人都遇过这种时刻:手边有一张不能随便给人看的表格,可能是全部门薪资明细、项目的报价底稿、跟合作方对完的最终版数据,结果被别人顺手双击就打开了。看两眼倒也罢了,最怕的是有人手一滑改了个数字,甚至…

2026/10/10 17:33:51 阅读更多 →
Skills项目太抽象?教你从四个维度精准定位写作方向

Skills项目太抽象?教你从四个维度精准定位写作方向

我理解你的困惑,但你给的“项目标题: skills”实在太模糊了,这不是一个具体项目。这就好比只说“我想做一道菜”,却没说用哪种食材、什么口味、什么烹饪方式,没人能真的给你端出一道成品菜。我可以把“skills”理解成“技能学习”…

2026/10/10 17:33:51 阅读更多 →
博士申请联系导师专用简历:技术对齐型说服文档设计指南

博士申请联系导师专用简历:技术对齐型说服文档设计指南

简介:本资源是一份专为申请考核制博士项目设计的个人简历模板,面向硕士在读或应届毕业、计划主动联系博导的理工科(尤其管理科学与工程、数据科学、计算机应用方向)申请者,解决“如何系统呈现学术潜力与科研匹配度”这…

2026/10/10 17:32:51 阅读更多 →

日新闻

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

卫星轨道分类全解析:从LEO到GEO的选型逻辑与工程实践

1. 从“卫星轨道分类”这个标题说起:为什么值得花时间搞懂第一次接触“卫星轨道分类”这个概念,很多人会觉得它离自己很远——不就是天上的星星怎么转吗?但如果你正在做航天任务规划、遥感数据接收、星座设计,甚至只是准备一场航天…

2026/10/10 0:00:39 阅读更多 →
Spring AOP 核心原理与实战:从概念到日志切面落地

Spring AOP 核心原理与实战:从概念到日志切面落地

1. 从一个真实痛点说起:为什么你的代码里到处都是重复逻辑刚入行那会儿,我写过一个用户管理模块,注册、登录、改密码、注销四个接口。每个接口里都塞了几乎一样的日志打印、参数校验、事务开启和提交。当时觉得没什么,能跑就行。直…

2026/10/10 0:00:40 阅读更多 →
Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

Python招聘数据采集与分析可视化:从采集清洗到薪资技能城市可视化全链路

简介:这是一套面向计算机相关专业学生与项目实战学习者的Python数据采集与分析可视化完整项目,以Boss直聘岗位数据为对象,适合用作毕业设计、课程设计或期末大作业。资源包共38个文件,约246KB,以13个py源码文件为核心&…

2026/10/10 0:00:40 阅读更多 →

周新闻

KT148A语音芯片外挂8002D功放的工程实践指南

KT148A语音芯片外挂8002D功放的工程实践指南

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

2026/10/10 11:14:25 阅读更多 →
LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

LLC谐振变换器增益公式推导:从FHA等效到完整归一化表达式

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

2026/10/10 1:36:08 阅读更多 →
ARM架构深度解析:从RISC设计理念到交叉编译实战

ARM架构深度解析:从RISC设计理念到交叉编译实战

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

2026/10/10 11:14:58 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →