MATLAB为机器学习提供了强大的集成环境,其核心是Statistics and Machine Learning Toolbox。启动MATLAB后,可以通过命令行、实时编辑器或App设计器进行工作。机器学习工作流通常包括数据准备、模型训练、评估和部署几个关键步骤。数据准备涉及导入数据、处理缺失值、特征缩放和数据分割,MATLAB提供了丰富的函数如readtable、rmmissing和normalize来完成这些任务。

一个典型的数据分割示例如下:
cv = cvpartition(data.Response, ‘Holdout’, 0.3);
trainingData = data(training(cv), :);
testData = data(test(cv), :);
MATLAB的分类学习器App(Classification Learner)和回归学习器App(Regression Learner)为初学者提供了无需编码的模型训练界面,可以快速比较多种算法的性能。
监督学习算法与应用
监督学习是机器学习中最常见的类型,其目标是利用带有标签的训练数据构建一个模型,用于预测新数据的输出。MATLAB支持多种监督学习算法。
- 决策树:易于理解和解释,可用于分类和回归。
- 支持向量机(SVM):在小样本、高维度数据上表现优异。
- 集成方法:如随机森林和AdaBoost,通过组合多个弱学习器来提升性能。
- K近邻(KNN):一种简单直观的惰性学习算法。
以分类为例,使用拟合函数训练一个模型非常简单:
Mdl = fitcsvm(trainingData, ‘Response’);
predictions = predict(Mdl, testData);
模型训练后,可以通过混淆矩阵、ROC曲线等工具进行评估,以选择最佳模型。
无监督学习技术解析
无监督学习用于发现数据中的内在模式或结构,而不需要预先标记的输出。常见的无监督学习技术包括聚类和降维。
聚类分析旨在将数据分组,使得同一组内的数据点彼此相似,而不同组的数据点相异。MATLAB提供了K均值聚类和层次聚类等方法。
idx = kmeans(data, 3);
gscatter(data(:,1), data(:,2), idx);
降维技术如主成分分析(PCA)可以减少数据集的变量数量,同时保留尽可能多的信息。这在数据可视化和特征提取中非常有用。
[coeff, score, latent] = pca(data);
biplot(coeff(:,1:2), ‘Scores’, score(:,1:2));
实战案例:鸢尾花分类
鸢尾花数据集是机器学习入门的经典案例。该数据集包含150个样本,每个样本有4个特征(花萼长度、花萼宽度、花瓣长度、花瓣宽度)和对应的鸢尾花种类标签。
首先加载并准备数据:
load fisheriris
X = meas;
Y = species;
cv = cvpartition(Y, ‘Holdout’, 0.2);
接下来,我们使用决策树进行分类:
treeModel = fitctree(X(training(cv),:), Y(training(cv)));
predictions = predict(treeModel, X(test(cv),:));
accuracy = sum(predictions == Y(test(cv))) / numel(Y(test(cv)));
通过view函数可以可视化决策树的结构,帮助我们理解模型的决策过程。
实战案例:波士顿房价预测
波士顿房价预测是一个经典的回归问题,旨在根据房屋的各种特征(如犯罪率、房间数量等)来预测其价格。
加载数据并创建训练集和测试集:
load boston
rng(‘default’) % 为了可重现性
cv = cvpartition(size(boston,1), ‘Holdout’, 0.2);
我们尝试使用线性回归模型:
linearModel = fitlm(boston(training(cv), 1:end-1), boston(training(cv), end));
predictedPrices = predict(linearModel, boston(test(cv), 1:end-1));
评估回归模型常用的指标包括均方根误差(RMSE)和决定系数(R²)。
rmse = sqrt(mean((predictedPrices
boston(test(cv), end)).^2));
rsquared = linearModel.Rsquared.Ordinary;
模型优化与性能提升
构建一个初始模型后,通常需要通过优化来提升其性能。这包括超参数调优、特征选择和模型集成。
超参数调优可以通过MATLAB的fitcsvm等函数的名称-值对参数,或者使用优化算法如贝叶斯优化来自动寻找最佳参数组合。
特征选择是另一个重要的优化步骤,它可以帮助减少过拟合,提高模型泛化能力。MATLAB提供了序列特征选择(sequentialfs)等函数。
不同模型在鸢尾花数据集上的性能对比可能如下:
| 模型类型 | 准确率 | 训练时间 |
|---|---|---|
| 决策树 | 96.7% | 0.05s |
| SVM | 98.3% | 0.12s |
| 集成方法 | 98.9% | 0.35s |
最终,通过save函数可以将训练好的模型保存下来,以便后续部署和使用。
内容均以整理官方公开资料,价格可能随活动调整,请以购买页面显示为准,如涉侵权,请联系客服处理。
本文由星速云发布。发布者:星速云。禁止采集与转载行为,违者必究。出处:https://www.67wa.com/130262.html