引言
支持向量机(Support Vector Machine,SVM)是一种强大的机器学习算法,广泛应用于分类和回归问题。MATLAB作为一个功能强大的科学计算软件,提供了SVM工具箱,使得SVM的应用变得简单而高效。本文将为您介绍如何在MATLAB中使用SVM进行预测,并提供一些实战案例。
环境准备
在开始之前,请确保您已经安装了MATLAB和SVM工具箱。如果没有安装,您可以通过MATLAB的App Gallery进行下载和安装。
基础知识
什么是SVM?
SVM是一种监督学习算法,其基本思想是在特征空间中找到一个最优的超平面,使得不同类别的数据点尽可能分开。SVM通过最大化超平面上最近的数据点到超平面的距离来实现这一点。
SVM的参数
- 核函数:用于将数据映射到高维空间,以便找到最优的超平面。常见的核函数有线性核、多项式核、径向基函数(RBF)核等。
- 惩罚参数C:控制模型对错误分类的容忍度,C值越大,模型对错误分类的容忍度越低。
快速入门
创建数据集
首先,我们需要创建一个数据集。以下是一个简单的示例:
% 创建数据集
X = [1, 2; 3, 5; 4, 6; 7, 8; 9, 10];
Y = [1; 0; 1; 0; 1];
训练SVM模型
接下来,我们将使用SVM工具箱中的fitcsvm函数来训练模型:
% 训练SVM模型
SVMModel = fitcsvm(X, Y, 'KernelFunction', 'linear');
预测新数据
使用训练好的模型来预测新数据:
% 预测新数据
X_new = [2, 3];
Y_pred = predict(SVMModel, X_new);
实战案例
案例一:手写数字识别
在这个案例中,我们将使用SVM来识别手写数字。以下是MATLAB代码:
% 加载MNIST数据集
MNIST = load('mnist.mat');
X = MNIST.Data;
Y = MNIST.Labels;
% 将数据分为训练集和测试集
cv = cvpartition(size(X, 1), 'HoldOut', 0.3);
idx = cv.test;
X_train = X(~idx, :);
Y_train = Y(~idx, :);
X_test = X(idx, :);
Y_test = Y(idx, :);
% 训练SVM模型
SVMModel = fitcsvm(X_train, Y_train, 'KernelFunction', 'linear');
% 预测测试集
Y_pred = predict(SVMModel, X_test);
% 计算准确率
accuracy = sum(Y_pred == Y_test) / numel(Y_test);
disp(['Accuracy: ', num2str(accuracy)]);
案例二:鸢尾花分类
在这个案例中,我们将使用SVM来分类鸢尾花。以下是MATLAB代码:
% 加载鸢尾花数据集
Iris = load('iris.mat');
X = Iris.Data;
Y = Iris.Labels;
% 训练SVM模型
SVMModel = fitcsvm(X, Y, 'KernelFunction', 'linear');
% 预测新数据
X_new = [3, 4.2];
Y_pred = predict(SVMModel, X_new);
disp(['Predicted class: ', num2str(Y_pred)]);
总结
本文介绍了如何在MATLAB中使用SVM进行预测,并提供了两个实战案例。希望本文能帮助您快速入门SVM,并在实际应用中取得成功。