基于MATLAB实现支持向量机(SVM)进行预测备
基于MATLAB实现支持向量机(SVM)进行预测
1. 数据准备
加载数据并划分为训练集和测试集。
% 加载数据
load fisheriris; % 使用MATLAB内置的鸢尾花数据集
X = meas; % 特征数据
Y = species; % 标签数据% 划分训练集和测试集
cv = cvpartition(size(X, 1), 'HoldOut', 0.2); % 保留20%作为测试集
X_train = X(training(cv), :);
Y_train = Y(training(cv), :);
X_test = X(test(cv), :);
Y_test = Y(test(cv), :);
2. 模型训练
使用fitcsvm
函数训练SVM模型,采用径向基函数(RBF)作为核函数。
% 训练SVM模型
SVMModel = fitcsvm(X_train, Y_train, 'KernelFunction', 'rbf', 'BoxConstraint', 1);
3. 预测
使用训练好的模型进行预测。
% 预测
[Y_pred, score] = predict(SVMModel, X_test);
4. 评估
计算模型的准确率和其他性能指标。
% 计算准确率
accuracy = sum(strcmp(Y_pred, Y_test)) / length(Y_test);
disp(['准确率:' num2str(accuracy * 100) '%']);% 绘制混淆矩阵
confusionchart(Y_test, Y_pred);
title('混淆矩阵');
5. 可视化预测结果
绘制真实值与预测值的对比图。
% 绘制预测结果
figure;
plot(1:length(Y_test), Y_test, 'b', 'DisplayName', '真实值');
hold on;
plot(1:length(Y_test), Y_pred, 'r--', 'DisplayName', '预测值');
legend;
xlabel('样本索引');
ylabel('类别');
title('真实值与预测值对比');
参考代码 支持向量机进行预测(SVM)Matlab版 www.youwenfan.com/contentcse/80709.html