岭回归实战:从多重共线性到RidgeCV调参的完整指南
1. 岭回归到底在解决什么问题很多人第一次接触岭回归是因为在用普通最小二乘法做线性回归时发现模型在训练集上表现很好一到测试集就崩了。或者更直观的现象是当你往模型里加入一个新的特征回归系数突然变得非常大甚至正负号都跟业务常识反着来。这种情况十有八九是遇到了多重共线性或者特征数量接近甚至超过样本量的问题。普通最小二乘法的目标函数是让残差平方和最小数学上它的解是 $\hat{\beta} (X^TX)^{-1}X^Ty$。注意这里有个矩阵求逆的操作。当特征之间存在高度相关性时$X^TX$ 会接近奇异矩阵它的行列式接近零求逆就会变得极不稳定。反映到结果上就是回归系数的方差被急剧放大——输入数据稍微扰动一下系数就能翻天覆地。岭回归的做法非常直接在目标函数里加一个L2正则项把系数向零的方向拉。具体来说岭回归的优化目标变成了$$\min_{\beta} \left{ \sum_{i1}^{n}(y_i - x_i^T\beta)^2 \alpha \sum_{j1}^{p}\beta_j^2 \right}$$这里的 $\alpha$ 就是正则化强度参数在sklearn里对应Ridge类的alpha参数。加了这一项之后解变成了 $\hat{\beta} (X^TX \alpha I)^{-1}X^Ty$。你看即使 $X^TX$ 本身接近奇异加上一个正数乘以单位矩阵之后整个矩阵的条件数就改善了求逆变得稳定。这就是岭回归最核心的价值——用一点点偏差换取方差的显著降低。我在实际项目里遇到过一个很典型的场景用几十个高度相关的传感器特征去预测某个连续值普通线性回归的系数动辄上千而且每次重新采样训练数据系数排名前几的特征都在变。换成岭回归之后系数被压缩到了一个合理的范围特征重要性排序也稳定多了。这不是玄学就是数学上的必然结果。岭回归适合谁用如果你正在做回归任务特征维度较高、特征之间有相关性、样本量不算特别充裕那岭回归应该是你第一批尝试的模型之一。它的训练速度很快调参也不复杂主要就是调alpha。而且sklearn的API设计得非常统一从线性回归切到岭回归基本就是改一个类名的事。2. Ridge类的参数拆解与选择逻辑2.1 alpha唯一需要认真调的参数Ridge类最重要的参数就是alpha它控制正则化的强度。alpha越大正则化越强系数被压缩得越厉害模型偏差增大但方差减小alpha越小越接近普通最小二乘方差大但偏差小。当alpha0时Ridge就完全等价于LinearRegression前提是求解器支持。那怎么选alpha最常用的方法是交叉验证。sklearn提供了RidgeCV类内部通过高效的留一交叉验证LOO-CV或者指定折数的K折交叉验证来选最优的alpha。我个人的习惯是先用RidgeCV在一个较宽的范围内粗筛比如alphasnp.logspace(-3, 3, 100)看看最优值大概落在哪个量级然后再在这个量级附近细化。这里有个经验alpha的最优值跟特征的尺度强相关。如果你的特征没有标准化不同特征的量纲差异巨大那么正则项对不同系数的惩罚力度实际上是不公平的。所以用岭回归之前标准化是必须的。sklearn的Ridge类有一个normalize参数在新版本中已弃用但我强烈建议不要依赖它而是自己用StandardScaler做标准化这样流程更可控也方便跟Pipeline集成。2.2 solver不同求解器的适用场景Ridge的solver参数决定了用什么数值方法求解。常用的有这几个solver适用场景特点auto默认值根据数据类型自动选择svd大多数情况最稳定通过奇异值分解求解不需要计算 $X^TX$cholesky特征数较少速度快但要求矩阵正定lsqr大规模稀疏数据迭代求解支持稀疏矩阵sag/saga大规模数据随机平均梯度下降速度快但需要调学习率我一般默认用auto让sklearn自己选。但如果数据量特别大比如几十万样本、上千特征我会显式指定solversag或solverlsqr因为svd在大矩阵上做分解会比较慢。不过要注意sag和saga对特征尺度很敏感必须标准化之后再用否则收敛会很慢甚至不收敛。2.3 fit_intercept截距项要不要正则化fit_intercept控制是否拟合截距。默认是True也就是模型会计算一个截距项。关键点在于岭回归的正则项只作用于系数不作用于截距。所以截距不会被压缩。这符合直觉——截距反映的是当所有特征为零时的基准值不应该被正则化惩罚。如果你的数据已经中心化了每个特征减去均值那截距理论上就是目标值的均值此时设fit_interceptFalse也可以。但大多数情况下保持默认的True就行。2.4 一个容易被忽略的细节特征标准化与alpha的联动前面提到了标准化的重要性这里展开说一下为什么。假设你有两个特征一个范围是0到1另一个范围是0到10000。如果不标准化第二个特征的系数自然会很小因为特征值大系数小就能产生同样的影响而第一个特征的系数会很大。岭回归对系数的L2惩罚是同等对待的结果就是第一个特征被过度惩罚第二个特征几乎不受影响。这显然不合理。标准化之后所有特征都在同一尺度上正则化才能公平地作用于每个系数。而且标准化之后alpha的最优范围也会更稳定通常落在 $10^{-3}$ 到 $10^3$ 之间。如果你发现最优alpha特别大或者特别小先检查一下标准化是不是做对了。3. 从零搭建一个完整的岭回归建模流程3.1 数据准备与探索性检查假设我们有一个回归任务数据放在一个CSV文件里目标列叫target。第一步不是急着建模而是先看看数据长什么样。import pandas as pd import numpy as np from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.linear_model import Ridge, RidgeCV from sklearn.pipeline import Pipeline from sklearn.metrics import mean_squared_error, r2_score # 读取数据 df pd.read_csv(data.csv) print(df.shape) print(df.describe()) # 检查缺失值 print(df.isnull().sum()) # 检查特征之间的相关性 corr_matrix df.drop(columns[target]).corr().abs() upper_tri corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k1).astype(bool)) high_corr [column for column in upper_tri.columns if any(upper_tri[column] 0.8)] print(f高度相关特征: {high_corr})这一步的目的是确认是否存在严重的多重共线性。如果发现有一堆特征之间相关系数超过0.8那岭回归就是一个很自然的选择。同时也要检查缺失值sklearn的模型默认不接受NaN需要提前处理。3.2 构建Pipeline标准化与岭回归的绑定我强烈建议用Pipeline把标准化和模型绑在一起。原因很简单如果你先在整个数据集上做标准化然后再划分训练集和测试集就会造成数据泄露——测试集的统计信息均值和标准差被用到了训练过程中。正确的做法是在训练集上fit标准化器然后transform测试集。Pipeline会自动帮你处理这个逻辑。# 划分特征和目标 X df.drop(columns[target]) y df[target] # 划分训练集和测试集 X_train, X_test, y_train, y_test train_test_split( X, y, test_size0.2, random_state42 ) # 构建Pipeline pipe Pipeline([ (scaler, StandardScaler()), (ridge, Ridge(alpha1.0)) ]) # 训练 pipe.fit(X_train, y_train) # 预测与评估 y_pred pipe.predict(X_test) print(fRMSE: {mean_squared_error(y_test, y_pred, squaredFalse):.4f}) print(fR2: {r2_score(y_test, y_pred):.4f})这段代码可以直接跑。alpha1.0只是一个初始值接下来我们要用交叉验证来找更好的。3.3 用RidgeCV自动选择最优alphaRidgeCV的用法和Ridge几乎一样只是多了一个alphas参数。它会自动做交叉验证选择平均验证分数最好的alpha。# 定义alpha候选范围 alphas np.logspace(-3, 3, 100) # 构建带CV的Pipeline pipe_cv Pipeline([ (scaler, StandardScaler()), (ridgecv, RidgeCV(alphasalphas, cv5, scoringneg_mean_squared_error)) ]) pipe_cv.fit(X_train, y_train) # 查看最优alpha best_alpha pipe_cv.named_steps[ridgecv].alpha_ print(f最优alpha: {best_alpha:.6f}) # 用最优模型评估 y_pred_cv pipe_cv.predict(X_test) print(fRMSE: {mean_squared_error(y_test, y_pred_cv, squaredFalse):.4f}) print(fR2: {r2_score(y_test, y_pred_cv):.4f})这里有个细节RidgeCV的cv参数如果传整数就是K折交叉验证如果传None就是高效的留一交叉验证LOO-CV。对于小数据集LOO-CV更精确但计算量稍大对于大数据集5折或10折就够用了。3.4 系数解读与特征重要性分析岭回归的系数是可以直接解读的但要注意因为做了标准化系数的绝对值大小反映了特征对目标的影响程度在正则化约束下。系数越大说明该特征对预测越重要。# 获取系数 coefs pipe_cv.named_steps[ridgecv].coef_ feature_names X.columns # 排序展示 coef_df pd.DataFrame({ feature: feature_names, coef: coefs, abs_coef: np.abs(coefs) }).sort_values(abs_coef, ascendingFalse) print(coef_df.head(20))我通常会把这个表和业务方一起看确认排名靠前的特征是否符合业务逻辑。如果某个特征系数异常大但业务上说不通可能是数据有问题或者需要进一步做特征工程。4. 调参过程中最容易踩的几个坑4.1 标准化没做对alpha怎么调都不对这是最常见的问题。很多人直接用Ridge(alpha1.0)跑发现效果不如普通线性回归就认为岭回归不行。实际上是因为特征尺度没统一正则化惩罚分配不均。我见过一个案例某个特征的范围是0到1另一个是0到100000结果岭回归把第一个特征的系数压到了接近零第二个特征几乎没受影响模型完全学偏了。解决方案永远把StandardScaler放在Pipeline的第一步。如果你用的是RidgeCV也要把标准化包进去否则交叉验证选的alpha是在未标准化的数据上选的没有意义。4.2 alpha的搜索范围设得太窄有些人只试alpha[0.1, 1, 10]这太粗糙了。最优alpha可能落在0.01或者100附近你的候选集里没有自然选不到最好的。我建议用np.logspace(-3, 3, 100)这样的对数均匀分布覆盖六个数量级基本不会漏掉。如果数据量特别大跑100个alpha的5折交叉验证太慢可以先用粗粒度比如20个点筛一遍再在最优值附近细化。4.3 把RidgeCV的alpha_属性搞混RidgeCV拟合之后最优的alpha存在alpha_属性里注意末尾有下划线而不是alpha。alpha是你传入的候选列表alpha_才是选出来的最优值。这个命名约定在sklearn里很常见带下划线的属性是fit之后才有的。4.4 用Ridge做特征选择岭回归会把系数压缩到接近零但不会精确等于零。这是L2正则和L1正则Lasso的本质区别。所以岭回归不能直接做特征选择——它不会帮你把某些特征完全剔除。如果你需要稀疏解应该用Lasso或者ElasticNet。但如果你只是想要稳定的系数估计和更好的泛化性能岭回归是更稳妥的选择。我个人的经验是如果特征数量不算太多比如几十到几百个而且大部分特征都有一定预测价值用岭回归如果特征数量巨大几千上万个而且相信只有少数特征真正有用用Lasso或ElasticNet。4.5 忽略了截距的正则化问题前面提过岭回归的正则项不作用于截距。但如果你手动给数据做了中心化减去均值然后设fit_interceptFalse那截距就变成了零模型可能会欠拟合。正确的做法是要么保持fit_interceptTrue让模型自己学截距要么在中心化目标值的同时也中心化特征并且不设截距。这两种方式在数学上是等价的但前者更省事。5. 岭回归在实际项目中的几个进阶用法5.1 用岭回归做模型融合的基模型岭回归虽然简单但在集成模型里经常作为基模型出现。它的偏差-方差特性跟树模型互补树模型擅长捕捉非线性关系但容易过拟合岭回归是线性的但非常稳定。把岭回归的预测结果作为一个特征喂给GBDT或者神经网络往往能提升整体效果。我做过一个实验在一个房价预测任务上单独用岭回归的R2是0.78单独用XGBoost是0.85但把岭回归的预测值作为XGBoost的一个额外特征之后R2提升到了0.87。原因就是岭回归捕捉到了XGBoost可能忽略的全局线性趋势。5.2 处理高维稀疏数据当特征数量远大于样本量时比如文本分类的TF-IDF矩阵普通最小二乘完全无法求解但岭回归可以。因为加了 $\alpha I$ 之后矩阵一定可逆。这时候solverlsqr或solversag是更好的选择它们支持稀疏矩阵输入内存占用小。from scipy.sparse import csr_matrix # 假设X_sparse是一个稀疏矩阵 X_sparse csr_matrix(X) ridge_sparse Ridge(alpha1.0, solverlsqr) ridge_sparse.fit(X_sparse, y)注意稀疏数据通常不需要标准化因为很多值是零标准化会破坏稀疏性这时候alpha的选择就更关键了。5.3 时间序列预测中的岭回归在时间序列任务里岭回归也有一席之地。把滞后项作为特征用岭回归做自回归预测可以避免普通自回归模型在滞后阶数较高时的系数爆炸问题。我通常会把滞后1到滞后K期的值作为特征然后加一些滚动统计量均值、标准差再用岭回归拟合。alpha通过时间序列交叉验证来选择而不是普通的K折因为时间序列不能随机打乱。from sklearn.model_selection import TimeSeriesSplit tscv TimeSeriesSplit(n_splits5) pipe_ts Pipeline([ (scaler, StandardScaler()), (ridgecv, RidgeCV(alphasnp.logspace(-3, 3, 50), cvtscv)) ]) pipe_ts.fit(X_train, y_train)5.4 贝叶斯岭回归自动确定alphasklearn还提供了BayesianRidge类它不需要手动调alpha而是通过贝叶斯推断自动从数据中估计正则化参数。原理是给系数和噪声方差都加上先验分布然后通过最大化边际似然来迭代更新。如果你的数据量不大又不想花时间调参BayesianRidge是一个很好的替代方案。from sklearn.linear_model import BayesianRidge br BayesianRidge() br.fit(X_train_scaled, y_train) y_pred_br br.predict(X_test_scaled) print(fBayesian Ridge RMSE: {mean_squared_error(y_test, y_pred_br, squaredFalse):.4f})实测下来BayesianRidge在小数据集上的表现通常和调好参的Ridge差不多但省去了交叉验证的时间。缺点是它假设噪声是高斯分布如果数据里有大量离群点效果会打折扣。6. 几个我踩过的坑和对应的排查思路6.1 模型在训练集上R2很高但测试集很差这是典型的过拟合。但岭回归本身有正则化为什么还会过拟合可能的原因有几个一是alpha太小正则化力度不够二是特征数量太多即使有正则化也扛不住三是数据泄露比如标准化用到了测试集的信息。排查步骤先检查Pipeline是否正确封装了标准化然后增大alpha看测试集表现是否改善如果还不行考虑做特征选择把相关性极高的特征去掉一些。6.2 系数符号与业务常识相反比如某个特征理论上应该正相关但模型学出来的系数是负的。这通常是多重共线性导致的。两个高度相关的特征同时进入模型模型可能会给其中一个正系数、另一个负系数互相抵消。解决办法是去掉其中一个或者用PCA降维或者增大alpha让系数更稳定。6.3 RidgeCV跑得特别慢如果数据量大、alphas候选多、cv折数高RidgeCV确实会慢。优化方法减少alphas数量先用粗粒度筛减少cv折数从10折降到5折如果数据是稀疏的用solverlsqr并传入稀疏矩阵。6.4 预测值范围明显偏窄岭回归的预测值方差通常比真实值小因为系数被压缩了。如果你发现预测值都集中在均值附近说明alpha太大了模型欠拟合。减小alpha或者检查标准化是否正确。7. 写在最后的一些个人体会岭回归是我在回归任务里最常备的模型之一。它不像深度学习那么耀眼也不像树模型那么强大但它的稳定性和可解释性是很多复杂模型比不了的。尤其是在特征工程阶段用岭回归快速建立一个baseline看看哪些特征有信号、哪些没有比直接上复杂模型要高效得多。我自己的习惯是拿到一个回归任务先用RidgeCV跑一遍记录下R2和RMSE作为基准。然后尝试特征工程、尝试更复杂的模型最后看提升幅度有多大。如果复杂模型比岭回归只好了两三个百分点我可能会选择岭回归因为它更简单、更稳定、更容易解释。还有一个细节岭回归的系数在标准化之后可以直接比较大小这在做特征重要性分析时非常方便。虽然不如SHAP值那么精细但对于快速筛选特征已经足够了。最后提醒一句永远不要在未标准化的数据上直接用Ridge。这个坑我见过太多次了包括我自己早期也犯过。标准化不是可选项是必选项。把StandardScaler和Ridge放进同一个Pipeline养成这个习惯能省掉很多莫名其妙的调试时间。

相关新闻

API Server从入门到实战:概念、架构设计与安全防护全解析

API Server从入门到实战:概念、架构设计与安全防护全解析

干这行这么多年,经常有朋友拿着"API Server"这个词来问我到底是个什么东西。其实往简单了说,API Server就是一台常驻运行的服务器程序,它专门负责接收来自网页、手机App、小程序或者别的服务的HTTP请求,然后按你写好的业…

2026/10/18 19:18:46 阅读更多 →
LLM Judge偏差与一致性优化:从位置偏好到Kappa系数的完整实战

LLM Judge偏差与一致性优化:从位置偏好到Kappa系数的完整实战

先说点实在的:“102”是我给一次内部评测优化任务起的代号,任务一句话就能说清——用大模型当裁判(LLM Judge),去评估两个客服问答模型谁的回复更好。听起来不难,真上手才发现问题不在候选模型身上&#xf…

2026/10/18 19:18:47 阅读更多 →
基于Spark的电影推荐系统实战:从论文源码到可运行项目

基于Spark的电影推荐系统实战:从论文源码到可运行项目

简介:这份资源是面向大数据与推荐系统方向学生及开发者的完整项目资料,围绕基于Spark的电影推荐系统展开,可用于课程设计、毕业设计或技术入门实践。内容涵盖绪论、开发技术介绍、系统分析与设计、系统实现及测试等章节,重点讲解S…

2026/10/18 19:18:46 阅读更多 →

最新新闻

78B多模态大模型如何落地?InternVL2_5-78B-MPO多卡部署与省显存量化完整攻略

78B多模态大模型如何落地?InternVL2_5-78B-MPO多卡部署与省显存量化完整攻略

【免费下载链接】InternVL2_5-78B-MPO 项目地址: https://ai.gitcode.com/OpenGVLab/InternVL2_5-78B-MPO 点击查看 免费下载 InternVL2_5-78B-MPO 是一款基于 ViT-MLP-LLM 架构的开源多模态大模型,融合了 6B 视觉编码器 InternViT 与 72B 语言模型 Qwe…

2026/10/18 23:08:17 阅读更多 →
定长140字节上报协议n值解析:字段偏移、熵值定位与纯算还原

定长140字节上报协议n值解析:字段偏移、熵值定位与纯算还原

简介:这是一份阿里140-n值纯算生成逻辑的代码解析包,面向反爬虫工程师、前端加密研究者与算法学习者。包内完整呈现n值生成全链路:从自定义base64加密算法入手,逐步拆解Ye、ke、B、u四个核心数组的来源与组装规则,涵盖…

2026/10/18 23:08:17 阅读更多 →
无监督深度单应性估计:PyTorch实战与几何建模原理

无监督深度单应性估计:PyTorch实战与几何建模原理

1. 项目概述:为什么“无监督深度单应性估计”值得你花30分钟认真读完“Unsupervised Deep Homography - Pytorch实现”——这个标题里藏着计算机视觉领域一个非常典型的“理想与现实撕扯点”。单应性(Homography)是什么?简单说&am…

2026/10/18 23:08:17 阅读更多 →
AUBO i5与D435i抓取实践:手眼标定、点云分割与避坑指南

AUBO i5与D435i抓取实践:手眼标定、点云分割与避坑指南

简介:面向机械臂视觉抓取开发者的可运行源码包,整合aubo i5机械臂与Intel RealSense D435i深度相机的识别抓取实践。压缩包仅6KB,内含3个文件,以html说明与inscode工程配置为主,附带gitignore版本管理配置,…

2026/10/18 23:08:17 阅读更多 →
Agent Skill 完全指南:让 AI 智能体“一次学会,处处复用“

Agent Skill 完全指南:让 AI 智能体“一次学会,处处复用“

目录 一、 Agent Skill入门 1.1 Agent Skill 到底是什么? 1.2 Agent Skill长什么样? 1.2.1 文件架构 1.2.2 SKILL.md文件格式 (1) Frontmatter字段 (2) Body content 1.2.3 Skill Demo 二、怎么用Agent Skill? 2.1 安装Agent 2.2 …

2026/10/18 23:08:17 阅读更多 →
推荐一个适合学习AI Agent开发的AI智能体开源项目:用TaoToken统一Key跑通DeepAgent实战

推荐一个适合学习AI Agent开发的AI智能体开源项目:用TaoToken统一Key跑通DeepAgent实战

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

2026/10/18 23:07:17 阅读更多 →

日新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/18 0:00:55 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/18 0:00:55 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/18 0:00:55 阅读更多 →

月新闻

我发现了一个新思路:用 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/18 0:55:02 阅读更多 →
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/17 17:22:31 阅读更多 →
黑夜航拍船只数据集训练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/18 12:16:16 阅读更多 →