支持向量机matlab代码
matlab% 生成一些示例数据 rng(1); % 设置随机种子以便结果可复现 X = randn(100,2); Y = ones(100,1); Y(1:50) = -1; % 训练支持向量机模型 svmModel = fitcsvm(X,Y); % 绘制决策边界 h = 0.02; % 网格步长 [x1Grid,x2Grid] = meshgrid(min(X(:,1)):h:max(X(:,1)),... min(X(:,2)):h:max(X(:,2))); XGrid = [x1Grid(:),x2Grid(:)]; [~,scores] = predict(svmModel,XGrid); figure; gscatter(XGrid(:,1),XGrid(:,2),scores(:,2) > 0,'bg','.'); hold on sv = X(svmModel.IsSupportVector,:); plot(sv(:,1),sv(:,2),'ko','MarkerSize',10); contour(x1Grid,x2Grid,reshape(scores(:,2),size(x1Grid)),[0 0],'k'); title('决策边界'); xlabel('特征1'); ylabel('特征2'); legend('类别1','类别2','支持向量'); hold off;
在这个例子中,首先生成一些简单的二维示例数据,然后使用 fitcsvm
函数训练一个 SVM 模型。接着,绘制了决策边界,展示了分类结果。
如果你想要更详细地了解支持向量机的原理和 MATLAB 中的实现,可以通过
调整超参数: SVM 中有一些超参数,如惩罚参数 BoxConstraint
和核函数类型 KernelFunction
,你可以尝试不同的超参数组合,以优化模型性能。
交叉验证: 使用交叉验证来评估模型的性能,并选择最优的超参数组合。MATLAB 中提供了 crossval
函数进行交叉验证。
特征工程: 如果你的数据包含多个特征,可以尝试进行特征选择、降维或生成新特征,以改善模型性能。
可视化支持向量: 可以绘制出支持向量,以及它们在特征空间中的分布,有助于理解模型的决策过程。
多类别分类: 如果你的问题是多类别分类,可以尝试使用多类别 SVM 或者一对一/一对多方法进行处理。
处理不平衡数据: 如果你的数据集不平衡,可以考虑使用权重调整或者采样技术来处理。
学习更多理论: 如果你对 SVM 的原理感兴趣,可以深入学习 SVM 的数学原理,包括间隔最大化、对偶问题和核方法等。
尝试其他工具包: 除了 MATLAB,还有其他机器学习工具包也提供了支持向量机的实现,你可以尝试比较不同工具包的性能和便利性。