MATLAB SVM 编程:线性核和高斯核在 Iris 和 Breast Cancer 数据集上的应用
以下是使用 MATLAB 编写的 SVM 代码,其中分别使用线性核和高斯核训练了 Iris 和 Breast Cancer 数据集:
- 使用线性核训练 Iris 数据集:
load fisheriris; % 加载 Iris 数据集
X = meas; % 特征矩阵
Y = species; % 类别向量
SVMModel = fitcsvm(X,Y,'KernelFunction','linear'); % 使用线性核训练 SVM 模型
CVSVMModel = crossval(SVMModel); % 交叉验证
classLoss = kfoldLoss(CVSVMModel); % 计算分类误差
- 使用高斯核训练 Iris 数据集:
load fisheriris; % 加载 Iris 数据集
X = meas; % 特征矩阵
Y = species; % 类别向量
SVMModel = fitcsvm(X,Y,'KernelFunction','gaussian'); % 使用高斯核训练 SVM 模型
CVSVMModel = crossval(SVMModel); % 交叉验证
classLoss = kfoldLoss(CVSVMModel); % 计算分类误差
- 使用线性核训练 Breast Cancer 数据集:
load breastcancer; % 加载 Breast Cancer 数据集
X = X'; % 转置特征矩阵
Y = y'; % 转置类别向量
SVMModel = fitcsvm(X,Y,'KernelFunction','linear'); % 使用线性核训练 SVM 模型
CVSVMModel = crossval(SVMModel); % 交叉验证
classLoss = kfoldLoss(CVSVMModel); % 计算分类误差
- 使用高斯核训练 Breast Cancer 数据集:
load breastcancer; % 加载 Breast Cancer 数据集
X = X'; % 转置特征矩阵
Y = y'; % 转置类别向量
SVMModel = fitcsvm(X,Y,'KernelFunction','gaussian'); % 使用高斯核训练 SVM 模型
CVSVMModel = crossval(SVMModel); % 交叉验证
classLoss = kfoldLoss(CVSVMModel); % 计算分类误差
注意:在使用高斯核训练 SVM 模型时,还需要设置其他参数,如核函数宽度等。在这里为了简化代码,使用了默认参数。如果需要更精细的控制,可以通过修改 fitcsvm 函数的参数实现。
原文地址: https://www.cveoy.top/t/topic/nwYP 著作权归作者所有。请勿转载和采集!