网站升级中内蒙古建设安全监督站的网站
2026/6/20 8:31:39 网站建设 项目流程
网站升级中,内蒙古建设安全监督站的网站,潍坊网站建设品牌,建设网站的基本工作流程文章目录一、Matlab SVM多分类的核心实现策略二、前置准备#xff1a;确认Matlab必备工具箱三、Matlab SVM多分类实战步骤#xff08;完整代码#xff09;场景说明步骤1#xff1a;数据准备与预处理#xff08;标准化数据集划分#xff09;步骤2#xff1a;构建SVM多分类…文章目录一、Matlab SVM多分类的核心实现策略二、前置准备确认Matlab必备工具箱三、Matlab SVM多分类实战步骤完整代码场景说明步骤1数据准备与预处理标准化数据集划分步骤2构建SVM多分类模型核心函数fitcsvm关键参数解读多分类场景重点关注步骤3模型预测predict函数步骤4模型评估准确率混淆矩阵步骤5结果可视化混淆矩阵特征散点图步骤6新数据多分类预测实战落地四、拓展切换「一对一One-vs-One」多分类策略两种多分类策略对比你想知道Matlab中SVM多分类的实现方法首先要明确SVM本身是二分类算法多分类任务是通过「间接策略」实现的。Matlab的Statistics and Machine Learning Toolbox中核心函数fitcsvm新版推荐旧版svmtrain已弃用默认支持多分类无需手动拆分二分类任务极大简化了操作。一、Matlab SVM多分类的核心实现策略Matlab中fitcsvm实现多分类的默认策略是「一对多One-vs-All, OVA」其核心逻辑通俗解读假设存在K个类别如鸢尾花3个品种则构建K个二分类SVM模型对于第i个模型将第i类样本标记为「正类」其余所有类别样本统一标记为「负类」预测阶段将待预测样本输入所有K个二分类模型选择输出置信度最高的那个类别作为最终预测结果补充若需使用「一对一One-vs-One, OVO」策略可通过配置fitcsvm的MulticlassMethod参数实现后续拓展。二、前置准备确认Matlab必备工具箱实现SVM多分类依赖Statistics and Machine Learning Toolbox确认步骤打开Matlab在命令行输入ver stats回车运行若输出工具箱版本、发布日期等信息说明已安装若提示“未找到命令”需通过「附加功能」→「获取附加功能」搜索安装该工具箱重启Matlab生效。三、Matlab SVM多分类实战步骤完整代码以经典「鸢尾花数据集3类样本」为例实现多分类任务全程可直接复制运行步骤清晰可落地。场景说明基于鸢尾花的4个特征花萼长度、花萼宽度、花瓣长度、花瓣宽度构建SVM多分类模型实现3个鸢尾花品种setosa、versicolor、virginica的分类识别。步骤1数据准备与预处理标准化数据集划分数据预处理是SVM模型性能的关键核心包括「标准化」消除尺度差异和「训练/测试集划分」评估模型泛化能力。% SVM多分类数据准备与预处理rng(123);% 设置随机数种子保证结果可复现% 1. 加载内置鸢尾花数据集无需手动构造直接调用load fisheriris;% 工作区生成2个变量% meas150×4 特征矩阵样本数×特征数% species150×1 类别标签3类setosa/versicolor/virginicaXmeas;% 提取特征数据Yspecies;% 提取多分类标签% 2. 数据标准化SVM必做步骤使用zscore标准化为均值0、标准差1[X_norm,X_mu,X_sigma]zscore(X);% X_mu/ X_sigma 用于后续新数据标准化% 3. 划分训练集70%和测试集30%nsize(X,1);% 总样本数150train_ratio0.7;train_numround(n*train_ratio);% 训练集样本数105% 随机抽取训练集索引保证数据随机性train_idxrandperm(n,train_num);test_idxsetdiff(1:n,train_idx);% 测试集索引剩余45个样本% 拆分训练集与测试集X_trainX_norm(train_idx,:);Y_trainY(train_idx,:);X_testX_norm(test_idx,:);Y_testY(test_idx,:);步骤2构建SVM多分类模型核心函数fitcsvmfitcsvm是Matlab实现SVM分类的核心函数默认支持多分类标签输入无需额外配置多分类策略直接构建模型即可关键参数解读清晰易懂。% SVM多分类构建模型fitcsvm函数fprintf(\n);fprintf(开始构建SVM多分类模型...\n);fprintf(\n);% 构建多分类SVM模型核心参数配置svm_multiclass_modelfitcsvm(...X_train,Y_train,...% 输入训练集特征与多分类标签KernelFunction,rbf,...% 选择高斯RBF核函数处理非线性数据默认推荐BoxConstraint,1,...% 惩罚参数C平衡分类间隔与分类误差0.1~10可调KernelScale,auto,...% 核函数参数自动优化无需手动调试Standardize,false,...% 已手动完成标准化此处设为falseVerbose,1...% 显示训练过程信息便于排查问题);关键参数解读多分类场景重点关注KernelFunction核函数选择多分类场景优先推荐rbf高斯径向基函数适应性强能处理绝大多数非线性数据线性可分数据可选择linear计算更快BoxConstraint惩罚参数CC越大对分类错误的惩罚越重易过拟合C越小惩罚越轻易欠拟合MulticlassMethod多分类策略选择默认onevsall一对多可手动设置为onevsone一对一输入标签Y_train支持字符型、数值型标签无需手动转换为独热编码Matlab自动处理。步骤3模型预测predict函数使用训练好的多分类模型对测试集和新数据进行预测语法简洁与二分类预测完全一致。% SVM多分类模型预测% 1. 对测试集进行预测评估模型性能Y_test_predpredict(svm_multiclass_model,X_test);% 2. 对训练集进行预测验证模型拟合效果Y_train_predpredict(svm_multiclass_model,X_train);步骤4模型评估准确率混淆矩阵多分类模型的评估核心是「分类准确率」整体分类效果和「混淆矩阵」直观展示各类别分类对错情况结果解读清晰明了。% SVM多分类模型评估% 1. 计算分类准确率正确分类样本数/总样本数acc_trainsum(strcmp(Y_train_pred,Y_train))/length(Y_train);acc_testsum(strcmp(Y_test_pred,Y_test))/length(Y_test);% 2. 输出评估结果fprintf(\n\n);fprintf(SVM多分类模型评估结果\n);fprintf(\n);fprintf(训练集 分类准确率%.6f\n,acc_train);fprintf(测试集 分类准确率%.6f\n,acc_test);% 3. 构建并输出混淆矩阵直观展示各类别分类效果conf_matconfusionmat(Y_test,Y_test_pred);fprintf(\n\n);fprintf(测试集混淆矩阵行真实类别列预测类别\n);fprintf(\n);disp(conf_mat);步骤5结果可视化混淆矩阵特征散点图通过可视化更直观地展示多分类结果便于后续优化模型重点突出「预测错误样本」方便定位问题。% SVM多分类结果可视化figure(Position,[100,100,1200,600]);% 设置图形窗口大小% 子图1混淆矩阵可视化更直观推荐报告使用subplot(1,2,1);confusionchart(Y_test,Y_test_pred);% 绘制交互式混淆矩阵title([SVM多分类测试集混淆矩阵准确率%.4f],acc_test);xlabel(预测类别);ylabel(真实类别);% 子图2前2维特征散点图展示分类效果标注错误样本subplot(1,2,2);% 提取各类别真实样本索引class1_idxstrcmp(Y_test,setosa);class2_idxstrcmp(Y_test,versicolor);class3_idxstrcmp(Y_test,virginica);% 绘制各类别真实样本散点图scatter(X_test(class1_idx,1),X_test(class1_idx,2),50,r,filled,DisplayName,setosa真实);hold on;scatter(X_test(class2_idx,1),X_test(class2_idx,2),50,g,filled,DisplayName,versicolor真实);scatter(X_test(class3_idx,1),X_test(class3_idx,2),50,b,filled,DisplayName,virginica真实);% 绘制预测错误样本黑色叉号标注便于定位问题error_idx~strcmp(Y_test_pred,Y_test);scatter(X_test(error_idx,1),X_test(error_idx,2),100,k,x,DisplayName,预测错误);% 图形标注设置xlabel(花萼长度标准化后);ylabel(花萼宽度标准化后);title(SVM多分类测试集特征散点图);legend(Location,best);grid on;hold off;步骤6新数据多分类预测实战落地基于训练好的模型对未知特征的样本进行多分类预测核心是「新数据标准化」使用训练集的均值和标准差保证预测结果的准确性。% SVM多分类新数据预测实战落地fprintf(\n\n);fprintf(新数据多分类预测结果\n);fprintf(\n);% 1. 构造2组未知鸢尾花特征数据4个特征与训练集格式一致new_iris[5.1,3.5,1.4,0.2;6.5,3.0,5.2,2.0];% 2. 新数据标准化必须使用训练集的X_mu和X_sigma保证尺度一致new_iris_norm(new_iris-X_mu)./X_sigma;% 3. 多分类预测new_iris_predpredict(svm_multiclass_model,new_iris_norm);% 4. 输出预测结果fori1:size(new_iris,1)fprintf(第%d组鸢尾花特征%s\n,i,num2str(new_iris(i,:)));fprintf(预测品种%s\n\n,new_iris_pred{i});end四、拓展切换「一对一One-vs-One」多分类策略若需使用「一对一」策略实现多分类仅需在fitcsvm中添加MulticlassMethod, onevsone参数即可核心代码修改如下% 构建SVM多分类模型一对一策略svm_multiclass_ovo_modelfitcsvm(...X_train,Y_train,...KernelFunction,rbf,...BoxConstraint,1,...KernelScale,auto,...Standardize,false,...Verbose,1,...MulticlassMethod,onevsone...% 切换为一对一多分类策略);两种多分类策略对比一对多OVAK类样本构建K个二分类模型计算量小适合类别数较多的场景是Matlab默认策略一对一OVOK类样本构建K(K-1)/2个二分类模型计算量较大但分类精度可能更高适合类别数较少如K≤5的场景。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询