在MATLAB中绘制K均值聚类结果

我正在进行一个基于MATLAB的拇指识别系统项目。我已经实现了K均值算法并得到了结果。现在我想像这里展示的那样绘制结果,但我尝试后未能成功。我使用的代码如下。

load training.mat; % 加载以获取trainingData变量labelData = zeros(200,1);labelData(1:100,:) = 0; labelData(101:200,:) = 1;k=2;[trainCtr, traina] = kmeans(trainingData,k);trainingResult1=[];for i=1:k    trainingResult1 = [trainingResult1 sum(trainCtr(1:100)==i)];endtrainingResult2=[];for i=1:k    trainingResult2 = [trainingResult2 sum(trainCtr(101:200)==i)];endload testing.mat; % 加载以获取testingData变量c1 = zeros(k,1054);c1 = traina;cluster = zeros(200,1);for j=1:200    testTemp = repmat(testingData(j,1:1054),k,1);    difference = sum((c1 - testTemp).^2, 2);    [value index] = min(difference);    cluster(j,1) = index;endtestingResult1 = [];for i=1:k    testingResult1 = [testingResult1 sum(cluster(1:100)==i)];endtestingResult2 = [];for i=1:k    testingResult2 = [testingResult2 sum(cluster(101:200)==i)];end

在上述代码中,trainingData是一个200 x 1054的矩阵,其中200代表拇指图像,1054代表列。实际上,每张图像的尺寸为25 x 42。我将每张图像重塑为行矩阵(1 x 1050),并添加了4个其他特征列,因此每张图像总共有1054列。同样,testingData的制作方式与trainingData相同,尺寸也是200 x 1054。现在我的问题只是如何像这里展示的那样绘制结果。


回答:

选择两个特征后,您可以按照示例进行操作。启动一个图形窗口,使用hold on,然后使用plotscatter来绘制中心点和数据点。例如:

selectedFeatures = [42,43];plot(trainingData(trainCtr==1,selectedFeatures(1)),     trainingData(trainCtr==1,selectedFeatures(2)),     'r.','MarkerSize',12)

这将绘制聚类1中数据点的选定特征值。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注