Maltab-机器学习-Classification Workflow

Importing Data

Instructions are in the task pane to the left. Complete and submit each task one at a time.

Task 1

letter = readtable("J.txt");

Task 2

plot(letter.X,letter.Y)

Task 3

axis equal

Task 4

letter = readtable("M.txt");

plot(letter.X,letter.Y)

axis equal

Preprocessing Data

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads the data.

letter = readtable("M.txt")

Task 1

letter.X = 1.5*letter.X;

View the result

plot(letter.X,letter.Y)

axis equal

Task 2

letter.Time = letter.Time - letter.Time(1)

letter.Time = letter.Time/1000

View the result

plot(letter.Time,letter.X)

plot(letter.Time,letter.Y)

Calculate Features

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and preprocesses the data.

letter = readtable("M.txt");

letter.X = letter.X*1.5;

letter.Time = (letter.Time - letter.Time(1))/1000

plot(letter.X,letter.Y)

axis equal

Task 1

dur = letter.Time(end)

Task 2

aratio = range(letter.Y)/range(letter.X)

View Features

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads the data.

load featuredata.mat

features

Task 1

scatter(features.AspectRatio,features.Duration)

Task 2

gscatter(features.AspectRatio,features.Duration,features.Character)

Fit a Model

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads the data.

load featuredata.mat

features

testdata

Task 1

knnmodel = fitcknn(features,"Character")

Task 2

predictions = predict(knnmodel,testdata)

Task 3

knnmodel = fitcknn(features,"Character","NumNeighbors",5)

predictions = predict(knnmodel,testdata)

Further Practice

[predictions,testdata.Character]

Evaluate the Model

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads the data.

load featuredata.mat

testdata

knnmodel = fitcknn(features,"Character","NumNeighbors",5);

predictions = predict(knnmodel,testdata)

Task 1

iscorrect = predictions == testdata.Character

Task 2

accuracy = sum(iscorrect)/numel(predictions)

Task 3

iswrong = predictions ~= testdata.Character

misclassrate = sum(iswrong)/numel(predictions)

Task 4

confusionchart(testdata.Character,predictions);

Apply Model to Many Letters

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads the data.

load featuredata13letters.mat

features

testdata

Task 1

gscatter(features.AspectRatio,features.Duration,features.Character)

xlim([0 10])

Task 2

knnmodel = fitcknn(features,"Character","NumNeighbors",5)

predictions=predict(knnmodel,testdata)

Task 3

iswrong=predictions~=testdata.Character

misclass=sum(iswrong)/numel(predictions)

confusionchart(testdata.Character,predictions)

k-means 聚类分析是一种无监督学习算法,用于数据分类。它的基本目标是在给定的数据集上划分成 `k` 类别,使得每个类别内的数据点尽可能相似,而不同类别的数据点则尽可能相异。这种方法尤其适用于特征向量可以表示的数据。 在 MATLAB 中实现 k-means 算法的步骤大致包括: 1. **初始化**:选择 `k` 个初始质心(中心点),通常随机选择数据集中的一些点作为初始质心。 2. **分配**:计算每个数据点到所有质心的距离,并将每个数据点分配给距离最近的那个质心所代表的类。 3. **更新**:对每个类,计算其内部所有数据点的平均值并将其作为新的质心。 4. **迭代**:重复执行“分配”和“更新”步骤,直到质心的位置不再发生变化或达到预定的最大迭代次数。 MATLAB 提供了内置函数 `kmeans()` 来方便地执行这个过程。一般使用方法如下: ```matlab % 示例数据 data = rand(50, 2); % 随机生成二维数据 % 执行 K-Means 分析 [idx, C] = kmeans(data, 3); % 将数据分为3组 % idx 包含每个数据点所属的簇编号 % C 包含各个簇的中心点坐标 % 可视化结果 scatter(data(:,1), data(:,2), [], idx); hold on; plot(C(:,1), C(:,2), 'kx', 'MarkerSize', 12, 'LineWidth', 2); ``` 在这个示例中: - 我们首先生成了一组二维随机数据。 - 使用 `kmeans()` 函数将数据划分为三个簇。 - `idx` 表示每个数据点对应的簇索引。 - 最后,我们通过散点图可视化了数据以及它们所属的簇。 --- ## 相关问题 - MATLAB k-means 实现 ### 1. 如何调整 k-means 的迭代次数? 你可以通过指定第三个输入参数来控制迭代次数。例如: ```matlab [idx, C] = kmeans(data, 3, 'Replicates', 5, 'MaxIter', 100); ``` 其中 `'MaxIter', 100` 指定了最大迭代次数。 ### 2. 怎么处理 k-means 结果中包含的异常值? 异常值可能导致簇分配失衡。一种策略是先使用 PCA 或者其他降维技术减少维度,然后应用 k-means;另外,在分配阶段使用权重、惩罚项等方法也能帮助减小异常值的影响。 ### 3. k-means 是否适合于非线性数据? 对于非线性分布的数据,k-means 的效果可能不佳。考虑使用其他聚类算法如 DBSCAN、层次聚类或自组织映射(SOM)。对于高维空间,也可以探索特征选择或降维技术提高 k-means 的性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

南叔先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值