在MATLAB中,分类学习器用于构建和评估分类模型。MATLAB提供了一些工具和功能,帮助你进行分类任务,例如分类学习器应用程序、统计和机器学习工具箱中的函数等。
数据集介绍
不同的人被要求在平板电脑上写字母"J"、“V"和"M”,手写的字母被存储为单独的文本文件。每个文件包含四列,每列之间用逗号分隔。这四列分别是时间戳、笔的水平位置、笔的垂直位置和笔的压力。时间戳是自数据收集开始以来经过的毫秒数。其他变量是规范化单位,即从 0 到 1。主文件夹有三个子文件夹,分别对应字母 J、V 和 M。
MAT 文件 featuredata.mat 包含了一张由多个人书写的这三种字母的提取特征表。表格“features”有三个变量:AspectRatio 和 Duration(在上一节中计算的两个特征),以及 Character(已知的字母)。
gscatter 函数用于制作分组散点图;散点图中的点根据分组变量的不同颜色进行着色。使用 gscatter 函数创建一个与散点图相同的图,但根据表格特征的字符变量中的字母上色。
导入数据
我们在打开应用程序之前的第一步将是导入我们将在工作区使用的数据。包含数据的 features.xlsx 文件已被提取到工作区。
启动分类学习器应用程序
点击 MATLAB 中的应用程序选项卡中可用的分类学习器。
我们也可以启动分类学习器应用程序通过输入classificationLearner
来打开该应用程序。
打开一个名为“新会话”的新窗口。由于数据已经在工作区中,它将显示在选项中,我们需要选择它。
在数据集部分选择特征时,它会自动识别响应和预测变量。这里指示的响应是我们将分类数据的参数。在这里,由于“Character”被选为响应,并且它显示有三个唯一值:“J”、“M”和“V”。预测变量是我们用来将它们分类到各自类别的特征。其他两个列方面比率和持续时间将自动成为预测变量。
在进入验证部分之前,我们要了解什么是验证及其组成部分。在验证中,训练数据被分为训练部分和验证部分。验证部分用于在测试之前检查训练好的模型,以确保模型不出现过拟合。验证过程有两种不同类型:
·交叉验证:在此,折数是训练数据随机划分的部分数量。其一部分将用于验证,其余部分用于训练。
·保留验证:我们可以选择保留作为测试数据集的百分比数据,其余数据用于训练。这通常推荐用于大型数据集。
选择数据集和验证方法后,应用程序的外观就是这样。训练数据特征的散点图将在会话打开时显示。散点图的 X 轴和 Y 轴可以在右侧进行更改。
对测试数据进行训练
由于我们不知道哪个模型适合该数据集,因此我们将在此选择所有选项,以对所有可用模型的测试数据进行训练。
我们可以在左侧看到多个模型的训练准确度结果。中间是所选模型的预测散点图和验证混淆矩阵。
导出模型到工作区
现在可以选择最高精度的模型。在这里,加权KNN和朴素贝叶斯的准确率最高。
点击导出选项,我已将它们分别导出到工作区,命名为 trainedModel 和 trainedModel1。导出有以下选项:
我们可以用测试数据测试这两个模型,并检查准确性以找到最佳模型。
导出后,命令窗口将显示如下:
测试导出的模型
使用 trainedModel.predictFcn(readtable(“features.xlsx”))命令将获得导出模型的预测输出。以下代码用于查找模型的准确性。
testdata=readtable("testdata.xlsx");predictions = char(trainedModel.predictFcn(testdata));% accuracyiscorrect=predictions==cell2mat(string((testdata.Character)));iscorrect=iscorrect(:,2);accuracy = sum(iscorrect)*100/20;
需要测试的数据集:
类似地,我们也需要尝试剩下的导出模型。最终,我们获得了 模型的测试准确率分别为 70%和 85%。因此,我们可以使用 KNN,因为它是最适合该数据集的模型。通过这种方式,我们可以更快地找到最适合数据集的模型。