我们可以通过一个简单的例子来展示如何使用 MATLAB 进行机器学习。在这个例子中,我们将使用一个内置的数据集来进行分类任务。我们将使用鸢尾花(Iris)数据集,这是一个常用于演示机器学习的经典数据集。
鸢尾花数据集
鸢尾花数据集包含了三种鸢尾花(Setosa、Versicolour 和 Virginica)的共150个样本,每个样本有四个特征:萼片长度、萼片宽度、花瓣长度和花瓣宽度。
目标
我们的目标是构建一个模型,能够基于这四个特征来预测一朵鸢尾花属于哪个种类。
MATLAB 实现
下面是使用 MATLAB 进行这项任务的步骤:
- 加载和探索数据
- 数据预处理
- 选择一个模型进行训练
- 评估模型的性能
- 进行预测
步骤 1: 加载和探索数据
首先,我们需要加载数据集并进行初步的探索:
% 加载鸢尾花数据集
load fisheriris
% 查看数据集的基本信息
whos
步骤 2: 数据预处理
数据预处理通常涉及清洗数据、处理缺失值、特征缩放等,但在这个例子中,鸢尾花数据集已经被很好地整理过,因此我们可以跳过这一步。
步骤 3: 选择模型并训练
我们将使用决策树模型,因为它既简单又直观:
% 分割数据为训练集和测试集
cv = cvpartition(size(meas,1),'HoldOut',0.3);
idx = cv.test;
% 分离训练和测试数据
Xtrain = meas(~idx,:);
Ytrain = species(~idx,:);
Xtest = meas(idx,:);
Ytest = species(idx,:);
% 训练决策树模型
tree = fitctree(Xtrain, Ytrain);
步骤 4: 评估模型性能
使用测试集评估模型性能:
% 进行预测
Ypred = predict(tree, Xtest);
% 计算准确度
accuracy = sum(strcmp(Ypred, Ytest)) / numel(Ytest);
disp(['Accuracy: ', num2str(accuracy)]);
步骤 5: 进行预测
现在你可以使用这个模型对新的数据进行预测了:
% 新样本
newSample = [5.0, 3.5, 1.3, 0.3];
% 预测新样本的类别
predictedSpecies = predict(tree, newSample);
disp(['Predicted species: ', predictedSpecies{1}]);
这个例子展示了如何在 MATLAB 中使用鸢尾花数据集来训练、评估和使用一个简单的机器学习模型。当然,实际的机器学习项目会更加复杂,可能包括更多的数据预处理、特征工程、模型选择和调整等步骤。
这里需要强调一点,对于许多机器学习算法,特别是涉及距离计算的算法(如支持向量机、k-近邻算法等),对数据进行标准化或归一化是非常重要的。标准化有助于保证所有特征对模型的贡献是均衡的,避免某些特征由于其数值范围大而对模型结果产生过大的影响。
在随机森林等基于树的模型中,标准化通常不是必须的,因为这类模型并不关心数据的具体数值,而是关注数据在哪里进行分割。不过,在实际应用中,进行标准化通常是一个好习惯,因为这可以提高模型的泛化能力,尤其是在你计划尝试多种不同的模型时。