在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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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