基于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/contentzhb/80709.html

 

专注于matlab/simulink,电子电路,编程