MATLAB实现LSSVM:从算法原理到参数调优与工程应用

简介:一套围绕LSSVM(最小二乘支持向量机)建模的MATLAB资源包,面向需要完成分类与回归任务的科研人员、工程师及学生,整合了从理论到实践的全套材料。包内提供LSSVMLab 1.6工具箱,包含大量函数与脚本,覆盖原始、鲁棒、稀疏等扩展算法,并提供训练预测、核函数构造、参数寻优、交叉验证、决策边界可视化与性能评估等常用模块。配套教程讲解该算法的基本概念、目标函数与优化方法,及数据预处理、模型训练与评估流程,并结合数据集展示分类和回归实例,还讨论了惩罚系数C、核参数γ的网格搜索调优,以及线性核、多项式核、RBF核的选择策略。资源共72个文件,其中70个为m脚本,另有1个PDF教程和1个mat示例数据文件,资源包仅1.91MB,便于离线查阅和直接运行。目前已有576人浏览学习,读者既能对照教程理解算法,也能将现成函数用于实际数据,快速完成建模与核函数对比,输出评价指标,降低重复编码成本。

1. 最小二乘支持向量机:从“调参调到怀疑人生”到“解一个线性方程组”

做回归预测的人,十有八九都被“训练集很美、验证集翻车”折磨过。传统支持向量机本身已经是很能打的回归器,可它要解二次规划问题,样本量一上来,训练时间肉眼可见地膨胀。LSSVM换了个思路:把不等式约束改成等式约束,把二次规划换成求解一组线性方程,程序实现从“调参玄学”变成了“解一个矩阵方程”。这份matlab-lssvm程序包含完整的最小二乘支持向量机实现,覆盖回归和分类两类任务,自带核函数计算、train/sim接口、参数寻优与结果可视化,拿来跑自己的业务数据、做论文基线、做二次开发都够用。

2. LSSVM算法原理与MATLAB工程结构:先弄清它在算什么

2.1 从SVM到LSSVM:等式约束带来的计算量下降

传统SVM分类问题里,我们写的是 min ½‖w‖² + CΣξᵢ,约束条件是 yᵢ(w·φ(xᵢ)+b) ≥ 1-ξᵢ,ξᵢ≥0。这个带不等式约束的最优化问题最终要交给二次规划求解器去迭代,样本量超过几千之后,训练时间会非常难看。LSSVM的改动很直接:把不等式约束改成等式约束 yᵢ = wᵀφ(xᵢ)+b+eᵢ,误差项在目标函数里用平方和来表示。于是优化问题变成:

min J(w, e) = ½‖w‖² + (γ/2)Σeᵢ²

对拉格朗日函数求偏导并令各偏导为零,最终会得到一组线性方程:

[0 1ᵀ ] [b ] [0] [1 Ω+γ⁻¹I] [α] = [y]

其中 Ωᵢⱼ = K(xᵢ, xⱼ) = φ(xᵢ)ᵀφ(xⱼ),也就是核矩阵。这个KKT系统可以直接用矩阵左除来求解,不再需要QP求解器迭代。

这两条路的差别在工程上非常重要。标准SVM的解是稀疏的,只有少数样本成为支持向量;LSSVM因为用的是等式约束,几乎每个样本对应的α都非零,也就是说所有训练样本都参与预测。带来的结果是:训练速度快一个量级,但预测时需要累加全部样本的核函数值,推理开销比稀疏模型大。这个特点决定了它最适合中小样本回归和分类场景,拿来跑几万条以内的数据很舒服,硬要上百万级样本就会同时卡在矩阵存储和推理速度上。

γ参数在这里的作用和SVM里的C类似,越大表示越信任观测数据,允许拟合误差更小,但过拟合风险也更高;越小则模型越平滑,对噪声越不敏感。这份代码里还有一个核参数sig2需要同步调优,后面会专门讲。

2.2 MATLAB程序的主体目录结构

拿到这份matlab-lssvm程序,先别急着执行,花三分钟把目录结构过一遍:

lssvm/ ├── install.m # 环境检查与路径配置 ├── trainlssvm.m # 训练入口:组装KKT系统并求解 ├── simlssvm.m # 预测入口:对新样本计算输出 ├── kernel_matrix.m # 核函数计算:线性/RBF/多项式 ├── prelssvm.m # 数据预处理:归一化与格式检查 ├── postlssvm.m # 预测结果后处理:逆归一化 ├── tune_lssvm.m # 网格搜索与交叉验证的参数寻优 ├── demo_regression.m # 回归示例 ├── demo_classification.m # 分类示例 └── data/ # 示例数据文件

trainlssvm.m是训练主入口,simlssvm.m是推理入口,kernel_matrix.m是中间层。不夸张地说,这个目录结构本身就是一套可复用的LSSVM最小框架:训练、预测、核函数三个核心文件解耦,预处理和后处理独立,调参工具单独放在tune_lssvm里。如果你打算做二次开发,重点关注这三个核心文件的接口约定即可。

2.3 数据在程序里走的完整链路

一次完整训练和预测的调用链路是:原始数据 → prelssvm(归一化与格式检查) → trainlssvm(构造核矩阵 → 求解KKT方程 → 得到alpha和b) → simlssvm(对新样本计算核值并加权求和) → postlssvm(逆归一化还原到原始量纲)。

很多新手只盯着trainlssvm里的矩阵左除,忽略了prelssvm的作用。如果数据里一列是0.001,另一列是10000,RBF核的欧氏距离会被大数值特征完全主导,小特征等于白给。常见做法是先缩放到[-1,1]或[0,1],预测结束再还原到原始量纲。这份程序里prelssvm和postlssvm就是干这个的,强烈建议不要跳过。

3. 核心模块代码拆解:训练、核函数、预测逐个落地

3.1 训练模块:组装KKT线性方程组并求解

下面是训练模块的核心逻辑,我把注释写清楚,方便你对比自己手里的版本:

function [alpha, b] = train_lssvm(X, y, gam, sig2, kernel_type) % LSSVM训练:组装KKT线性方程组并求解 % X n*d 输入样本,每行一个样本 % y n*1 对应输出(回归值或分类标签) % gam 正则化参数,常见取值范围1~1000 % sig2 核参数,RBF核里对应 exp(-||xi-xj||^2/sig2) % alpha 拉格朗日乘子,n*1 % b 偏置,标量 n = size(X, 1); Omega = kernel_matrix(X, X, kernel_type, sig2); % n*n 核矩阵 A = zeros(n+1, n+1); A(1, 2:end) = 1; A(2:end, 1) = 1; A(2:end, 2:end) = Omega + eye(n) / gam; rhs = [0; y(:)]; sol = A \ rhs; b = sol(1); alpha = sol(2:end); end

代码逻辑分四步:先计算核矩阵Omega,再往KKT矩阵A的对角线上叠加1/gam,接着构造右侧向量,最后用A \ rhs一步解出b和alpha。这里用左除而不是inv(A)*rhs,是因为MATLAB对\做了数值稳定性优化,对对称正定矩阵会走Cholesky分解路径,比显式求逆更快也更稳。

需要注意两点。第一,如果n超过3000,这个n+1阶稠密矩阵的存储和求解都会明显吃力,此时要么降采样,要么改用线性核减少复杂度。第二,y必须保证是列向量,如果从Excel或CSV读进来是行向量,y(:)这一句已经帮你兜底了。

3.2 核函数矩阵:RBF核与线性核的MATLAB实现

核函数是LSSVM里连接输入空间和高维特征空间的桥。下面的实现支持三种常用核:

function K = kernel_matrix(A, B, kernel_type, sig2, degree) % 计算矩阵A与矩阵B的核函数结果 % A 是训练样本,B 可以是训练样本也可以是新样本 % 返回 size(A,1) * size(B,1) 的核矩阵 if nargin < 5 degree = 3; end switch lower(kernel_type) case 'linear' K = A * B'; case 'rbf' d2 = pdist2(A, B).^2; K = exp(-d2 / sig2); case 'poly' K = (A * B' + 1).^degree; otherwise error('不支持的核类型:%s', kernel_type); end end

这段代码最核心的是pdist2(A, B).^2,它计算两两样本之间的欧氏距离平方,再除以sig2并取负指数。如果A和B都是训练集本身,得到的K就是方阵,对角线元素为1;如果B换成新样本,得到的是训练样本与新样本之间的核值矩阵,维度是n_train×m_new。

不同代码库对sig2的定义有差异。这里的sig2对应分母整体,即 exp(-‖xᵢ-xⱼ‖²/sig2);另一类常见写法是 exp(-‖xᵢ-xⱼ‖²/(2σ²))。如果你从别的实现迁移数据,先打印几组核矩阵的对角线和最大值,确认量纲一致再继续。

3.3 预测模块:把alpha和b变成新样本的预测值

预测模块在代码里通常叫做simlssvm:

function yp = sim_lssvm(Xsv, alpha, b, Xnew, kernel_type, sig2) % 对新输入 Xnew 计算模型输出 % Xsv 是训练样本,LSSVM 中所有训练样本都是支持向量 % 回归问题直接返回数值;分类问题需要对结果取 sign K = kernel_matrix(Xsv, Xnew, kernel_type, sig2); yp = K' * alpha + b; end

计算逻辑就是一句话:新样本和所有训练样本做核函数运算,得到K矩阵,再乘alpha加b。K的维度是n_train×m_new,转置后变成m_new×n_train,与alpha做矩阵乘法得到m_new×1的预测值。

这里最容易出错的是Xsv与训练时使用的X必须完全一致,不能只换顺序,也不能漏样本。如果训练时代码做了样本缩减,预测时也必须把Xsv同步成缩减后的那批样本。分类场景里,训练时y若是+1/-1标签,预测后还要做一次sign(yp)才能得到类别。

4. 跑通与避坑:数据格式、训练脚本与结果可视化

4.1 数据准备与归一化约定

这份程序要求输入特征矩阵X和输出向量y分开存放,常见格式是一张二维表,最后一列是标签,其余列是特征。读取和归一化用下面这段:

data = load('data/example.txt'); X = data(:, 1:end-1); y = data(:, end); X = (X - mean(X)) ./ std(X); % z-score 归一化

z-score归一化之后每个特征都落在均值0、方差1的分布里,RBF核的距离计算不会被大数值特征带偏。输出y要不要归一化需要分情况:回归问题建议也归一化,避免数量级差异影响求解;分类问题只要标签是+1/-1或0/1,直接使用即可。如果对y做了归一化,预测出来的结果必须用保存的均值和标准差还原回去,这一步忘掉的话,所有预测曲线都会整体偏移。

4.2 最小可运行示例与可视化

拿带噪声的正弦函数做个回归示例,整个流程一目了然:

% 1. 构造带噪声的正弦数据 x = (-3:0.1:3)'; y = sin(x) + 0.1 * randn(size(x)); % 2. 分训练集和测试集:奇数索引训练,偶数索引测试 Xtr = x(1:2:end); Ytr = y(1:2:end); Xte = x(2:2:end); Yte = y(2:2:end); % 3. 训练 gam = 10; sig2 = 0.5; [alpha, b] = train_lssvm(Xtr, Ytr, gam, sig2, 'rbf'); % 4. 预测 Yp = sim_lssvm(Xtr, alpha, b, Xte, 'rbf', sig2); % 5. 计算 RMSE 并绘图 rmse = sqrt(mean((Yp - Yte).^2)); fprintf('RMSE = %.4f\n', rmse); figure; plot(Xte, Yte, 'o'); hold on; plot(Xte, Yp, 'r-', 'LineWidth', 1.5); legend('真实值', '预测值'); xlabel('x'); ylabel('y'); title('LSSVM 回归预测');

这里的训练用Xtr作为输入,预测时同样要传入Xtr作为支持向量集合。画出的图里如果预测曲线完全贴住真实点,说明模型拟合得很好;如果是一条接近水平的直线,说明核参数或数据归一化有问题。RMSE量级要和原始数据的波动范围对比着看,比如本例y范围是[-1.3, 1.3],RMSE在0.1左右就算不错。

4.3 常见问题与排查:现象、原因、解决

下面这几个坑是跑LSSVM最容易遇到的,我一条条拆开讲。

坑一:训练时提示“矩阵接近奇异或严重缩放”。现象是MATLAB给出Warning,解出的alpha数值巨大且正负交替。原因是样本中存在重复或近似重复的数据点,导致核矩阵的某些行几乎线性相关;或者特征之间存在强共线性。解决办法是先去重,再检查特征相关性,必要时把gam调小一点,给对角线加上更大的数值稳定项。

坑二:训练集精度极高,验证集预测结果一塌糊涂。这是典型的过拟合,现象是训练集RMSE接近0,验证集RMSE比训练集大两个数量级。原因是sig2过小或gam过大,模型把噪声也背下来了。解决方法是做交叉验证,不要看单次训练集的精度;把gam和sig2放到对数网格里搜索,别凭感觉给值。

坑三:预测输出几乎全是同一个常数。现象是不同输入样本得到相同或几乎相同的预测值。原因是sig2设置得过大,核函数对所有样本都输出接近1的值,模型退化成只靠b做预测;另一种可能是数据没有归一化,某个特征尺度太大导致距离被拉平。解决方法是把sig2缩小一到两个数量级,同时检查归一化操作是否真的应用到了训练和测试两组数据上。

坑四:样本量稍大内存直接爆掉。现象是n=5000以上时,训练前内存占用飙到几个GB。原因很简单——核矩阵是n×n稠密矩阵,存5000×5000的双精度数就要200MB,两万样本就是3.2GB。解决方法是改用线性核,或者先做样本抽取,比如只保留代表性样本参与训练;真要全部用上,就需要把核矩阵分块计算,这份程序默认不支持。

5. 参数调优与模型评估:网格搜索、交叉验证和指标选择

5.1 为什么gam和sig2是决定性超参数

LSSVM里需要手工调的两个核心参数是gam和sig2,它们共同决定了模型复杂度,而且相互耦合,分开调很容易顾此失彼。gam管的是正则化强度,gam越大,模型对训练数据越“上心”,误差越小但可能过拟合;gam越小,模型越平滑。sig2管的是RBF核的影响范围,sig2越小,每个训练样本的影响半径越小,决策边界越复杂;sig2越大,影响范围越广,模型越平滑,但过大就会退化成常数预测。

这两个参数必须放在一起调,因为RBF核的有效表达能力是它们乘积和比值的综合结果。比如gam=100且sig2=0.01可能过拟合,但gam=100且sig2=1可能正好合适。最稳的方法是网格搜索,范围一般取对数刻度:gam从10⁻²到10³,sig2从10⁻²到10¹,每个量级取两到三个点。

5.2 交叉验证与网格搜索的MATLAB写法

调参不能拿单一训练集精度说话,必须做交叉验证。下面这段是五折交叉验证加网格搜索的示例:

function mse = cv_lssvm(X, y, gam, sig2, folds) idx = crossvalind('Kfold', size(X, 1), folds); errs = zeros(folds, 1); for k = 1:folds tr = (idx ~= k); te = (idx == k); [alpha, b] = train_lssvm(X(tr, :), y(tr, :), gam, sig2, 'rbf'); yp = sim_lssvm(X(tr, :), alpha, b, X(te, :), 'rbf', sig2); errs(k) = mean((yp - y(te, :)).^2); end mse = mean(errs); end % 网格搜索 gams = logspace(-2, 3, 6); sig2s = logspace(-2, 1, 4); bestMse = inf; bestGam = NaN; bestSig2 = NaN; for g = gams for s = sig2s mse = cv_lssvm(X, y, g, s, 5); if mse < bestMse bestMse = mse; bestGam = g; bestSig2 = s; end end end fprintf('最优:gam=%.4f, sig2=%.4f, MSE=%.4f\n', bestGam, bestSig2, bestMse);

这段逻辑就是把参数对组合遍历,每个组合跑一遍五折交叉验证,取平均MSE作为评价标准。分类任务把MSE换成错误率即可:errs(k) = mean(sign(yp) ~= y(te,:))。

注意,如果你的数据是时间序列,随机K折交叉验证是错的,会造成未来信息泄露。时间序列应该用滑动窗口式切分,比如前70%训练、后30%验证,或者按连续块做多折验证。这是调参里最常见也最隐蔽的坑。

5.3 回归与分类场景下的评估指标

模型好坏不能只盯一个RMSE,至少要看回归和分类各自的常用指标。回归场景用这组:RMSE反映误差的量级,MAE反映平均绝对偏差,R²反映模型解释了多少百分比的数据波动。分类场景用这组:准确率是最直观的,但类别不平衡时不靠谱;F1兼顾精确率和召回率;AUC评估排序能力,对正负样本比例不敏感。

任务指标看什么
回归RMSE / MAE / R²误差量级、平均偏差、拟合优度
分类Accuracy / F1 / AUC整体正确率、类别平衡下的稳健性、排序质量

我习惯在调参完成后把最优参数下的训练集指标和测试集指标放在一起对比。如果两者差距很大,说明过拟合依旧存在,需要把gam或sig2往平滑方向调整;如果测试集指标比训练集还高,先检查是否发生了数据泄露,而不是高兴得太早。

6. 二次开发与工程化改造:让程序从Demo变成能用的工具

6.1 自定义核函数

LSSVM框架里更换核函数是成本最低的二次开发。以引入卡方核为例,只需在kernel_matrix里加一个分支:

case 'chi2' diff = abs(A.^2 - B.^2); K = exp(-sum(diff, 2) / sig2);

这里A和B维度不一致时矩阵运算要小心,通常做法是预先用pdist2或两层循环处理。加完分支后,所有训练和预测调用自动生效,不需要改动其它文件。验收办法是拿同一个数据集对比新旧核函数下的交叉验证MSE,指标变好才说明核函数改造有实际价值。

6.2 批量调参与并行加速

网格搜索是天然可并行的任务,把外层循环换成parfor就能在多核机器上加速。需要注意每个worker都要能访问train_lssvm和kernel_matrix这两个函数文件;如果并行池报错,先把工具箱函数放到共享路径下,再启动parpool。实际使用时我一般先跑一轮粗网格找有利区域,再在最优参数附近加密一轮细网格,比直接跑全网格省一半时间。

模型导出的工程化步骤同样重要:训练完保存alpha、b、Xsv、sig2到.mat文件,预测时只加载这几个变量,不依赖训练代码。如果要把模型嵌入其它系统,建议单独写一个轻量预测函数,只包含核函数和线性加权两步,方便后续用MATLAB Coder转成C代码。

6.3 增量更新的一种务实做法

LSSVM的缺点是非稀疏,新样本到来时严格意义上需要重新求解整个线性系统。一个务实做法是保留最近N个代表性样本作为支持集,每次把新样本并进去后,先剔除距离最近或误差最小的冗余样本,再重新解一次KKT方程。样本量在几千以内的场景,这种“滑动窗口式重训”每次耗时都在秒级,完全够用。

这几年我每次拿这套LSSVM代码去碰新数据集,都强制自己先检查核矩阵的量纲,再谈调参和精度,这个习惯帮我避开了绝大部分“训练集漂亮、上线翻车”的局面。模型选得再花哨,也不如先把数据分布、参数范围和验证方式这三件事做扎实,希望帮到你。

本文还有配套的精品资源,点击获取

相关新闻

Linux内核模块npreal2:串口服务器虚拟串口驱动编译装载与故障排查

Linux内核模块npreal2:串口服务器虚拟串口驱动编译装载与故障排查

简介&#xff1a;npreal2 是 Moxa RealTTY 在 Linux 环境下的驱动程序源码包&#xff0c;面向需要在 4.x/5.x 内核上部署 RealTTY 串口设备的嵌入式开发与系统运维人员&#xff0c;以 C 语言实现&#xff0c;解决设备在 Linux 下的驱动适配问题。包内针对内核版本拆分了 kernel…

2026/10/21 4:42:51 阅读更多 →
技能管理底层逻辑:从习得、盘点到验证的完整方法论

技能管理底层逻辑:从习得、盘点到验证的完整方法论

1. 从“skills”这个标题说起&#xff1a;一个被低估的硬核话题看到“skills”这个词&#xff0c;很多人第一反应是“技能嘛&#xff0c;谁不知道”。但恰恰是这种看似人人都懂的概念&#xff0c;在实际操作中翻车的人最多。我见过太多人列了一堆技能清单&#xff0c;学完就忘&…

2026/10/21 4:41:51 阅读更多 →
从技能焦虑到体系化成长:硬技能、软技能与元技能修炼指南

从技能焦虑到体系化成长:硬技能、软技能与元技能修炼指南

做技术这些年&#xff0c;我越来越觉得“skills”这个词的分量被低估了。很多人把技能理解成一串工具名字、一堆框架列表&#xff0c;觉得“我会用这个库”就等于有技能&#xff0c;结果面完试照样没下文、接了项目照样翻车。真正的技能体系不是知识点的堆砌&#xff0c;而是“…

2026/10/21 4:41:51 阅读更多 →

最新新闻

使用 Zafiro.Avalonia 语义容器构建可维护的 Avalonia 布局:HeaderedContainer、EdgePanel 与 Card 实战指南

使用 Zafiro.Avalonia 语义容器构建可维护的 Avalonia 布局:HeaderedContainer、EdgePanel 与 Card 实战指南

AI 技能AI 插件人工智能 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600 agentic skills. Includes CLI, local MCP, c…

2026/10/21 5:30:11 阅读更多 →
双线AI Agent架构:权限边界与安全机制的设计实践

双线AI Agent架构:权限边界与安全机制的设计实践

这半年我们团队一直在折腾一套双线 Agent 框架&#xff0c;内部代号分别是 QClaw 和 WorkBuddy。项目做到中期&#xff0c;周围人问得最多的一个问题就是&#xff1a;你们为什么不把两套能力合成一个 Agent&#xff0c;非要拆成两条线&#xff1f;等到权限事故出了两次之后&…

2026/10/21 5:30:11 阅读更多 →
Avalonia 交互逻辑分层实战:用 Xaml.Interaction.Behaviors 替代 Converter,打造干净的 Zafiro 视图层

Avalonia 交互逻辑分层实战:用 Xaml.Interaction.Behaviors 替代 Converter,打造干净的 Zafiro 视图层

AI 技能AI 插件人工智能 【免费下载链接】agentic-awesome-skills AAS Core is the local, agent-first control plane for complete catalog discovery, agent-owned selection, stack validation, and planning, backed by 2,600 agentic skills. Includes CLI, local MCP, c…

2026/10/21 5:30:11 阅读更多 →
用Claude Code实现多项目高效管理:上下文隔离与规则设计实践

用Claude Code实现多项目高效管理:上下文隔离与规则设计实践

1. 为什么需要一套多项目管理方案去年底我们团队接了一个跨平台系统集群的维护需求&#xff0c;手上同时有五个项目在推进。每个项目都有自己的技术栈、发布时间线和依赖组件&#xff0c;最要命的是这些项目之间还有公共服务层互相依赖。以前用传统命令行的方式逐个项目开终端、…

2026/10/21 5:30:11 阅读更多 →
基于K6的支付系统性能压测实战指南

基于K6的支付系统性能压测实战指南

做支付系统的性能验证&#xff0c;是我这几年踩坑最密集的领域之一。业务高峰期接口一抖&#xff0c;服务器CPU飙到99%&#xff0c;紧接着订单积压、支付超时、对账不平&#xff0c;最后大半夜一群人围着告警大屏开会。我后来把整套验证方式固化下来&#xff0c;核心选型就是K6…

2026/10/21 5:30:11 阅读更多 →
AI搜索时代的口碑优化:从口径库到内容证据链的实战指南

AI搜索时代的口碑优化:从口径库到内容证据链的实战指南

在各行业都在谈“数字化”的时候&#xff0c;真正影响消费决策的通道其实已经换了。以前大家搜一个品牌&#xff0c;是翻链接、看标题、挑网站&#xff1b;现在打开对话式AI&#xff0c;直接问一句“这座城有什么值得吃的”“这家店的真实口碑怎么样”&#xff0c;然后就看AI给…

2026/10/21 5:29:11 阅读更多 →

日新闻

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

统一内存+量化:锐龙AI Max PRO 400如何本地跑320B大模型

这段时间硬件圈和AI圈都在传一个事&#xff1a;AMD锐龙AI Max PRO 400系列把最高192GB统一内存搬进了PC形态的产品里&#xff0c;按宣传口径&#xff0c;本地跑320B参数的大家伙不再是纸面概念。我第一反应倒不是“内存真大”&#xff0c;而是这话背后的含金量——它把过去只能…

2026/10/21 0:00:11 阅读更多 →
AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

AI助手深度使用体验:对话质量、长文本处理与指令遵循如何留住用户

1. 从“封号重开”这个行为说起&#xff1a;用户到底在追求什么“封号重开”这四个字&#xff0c;放在任何产品语境里都带着一股决绝的味道。一个账号从零开始积累使用记录、调教偏好、沉淀工作流&#xff0c;背后是大量的时间和精力成本。正常情况下&#xff0c;没有人愿意主动…

2026/10/21 0:00:11 阅读更多 →
ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

ROS中YOLOv3工程落地:通信同步、坐标变换与性能调优

1. 为什么在ROS里硬刚YOLOv3不是“炫技”&#xff0c;而是工程落地的必经之路我第一次在某高校机器人实验室看到那台搭载Jetson TX2的移动底盘原地打转、反复识别错垃圾桶时&#xff0c;就意识到&#xff1a;单纯跑通darknet_ros demo和真正让YOLOv3在ROS里“干活”&#xff0c…

2026/10/21 0:00:11 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/21 4:27:17 阅读更多 →

月新闻

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