svm二分类matlab代码,解决二分类问题
时间: 2024-11-22 16:17:02 浏览: 57
在MATLAB中,支持向量机(SVM)是一种常用的机器学习算法用于二分类问题。以下是一个简单的线性SVM分类器的示例代码:
```Matlab
% 导入数据集(假设为'data.csv')
data = readtable('data.csv');
X = data(:, 1:end-1); % 特征矩阵
y = data(:, end); % 类别标签
% 数据预处理(如归一化、编码等)
[X_train, X_test, y_train, y_test] = trainTestSplit(X, y, 'HoldOut', 0.3); % 划分训练集和测试集
X_train = normalize(X_train);
X_test = normalize(X_test);
% 使用LibSVM库,需要先安装libsvm
addpath(genpath('your_libsvm_path')); % 根据实际路径替换
% 创建SVM模型,选择线性核函数
C = 1; % 正则化参数
kernel_func = 'linear'; % 线性内积核
options = ['-c ' num2str(C)]; % 参数设置
% 训练SVM模型
model = fitcsvm(X_train, y_train, options);
% 预测
predicted_labels = predict(model, X_test);
% 计算性能指标
accuracy = sum(predicted_labels == y_test) / numel(y_test);
confusion_matrix = confusionmat(y_test, predicted_labels);
% 显示结果
disp(['Accuracy: ', num2str(accuracy)]);
disp(confusion_matrix);
```
注意,上述代码假设你已经有一个CSV文件作为输入数据,并且你的系统上安装了MATLAB自带的`trainTestSplit`函数以及libsvm工具包。如果你使用的是原始的SVM函数,例如`svmtrain`和`sprintf`, 代码会有所不同。
阅读全文