matlab中kmeans函数的用法
时间: 2023-10-07 17:11:29 浏览: 263
在MATLAB中,kmeans函数是用于执行k均值聚类的函数。k均值聚类是一种无监督学习算法,它将一组数据分成k个不同的簇,使得每个数据点都属于其中之一,使得簇内的数据点相似度较高,簇间的数据点相似度较低。
kmeans函数的用法如下:
```matlab
[idx, C] = kmeans(X, k)
```
其中,X是输入数据矩阵,每一行代表一个数据点,每一列代表一个特征。k是指定的簇的数量。idx是一个向量,代表每个数据点所属的簇的编号。C是一个矩阵,每一行代表一个簇的质心(即簇内数据点的均值)。
可以使用以下可选参数来定制kmeans函数的行为:
- 'start':指定质心的初始位置。可以是一个k行d列的矩阵,其中d是特征的数量,k是簇的数量。
- 'EmptyAction':指定当某个簇为空时的处理方式。可以是'error'(默认)、'drop'或'resample'。
- 'MaxIter':指定最大迭代次数。默认值是100。
- 'Display':指定显示信息的级别。可以是'final'(默认)、'iter'或'off'。
例如,下面是一个使用kmeans函数进行聚类的例子:
```matlab
% 生成随机数据
X = randn(100, 2);
% 进行k均值聚类
k = 3;
[idx, C] = kmeans(X, k);
% 绘制聚类结果
figure;
hold on;
scatter(X(idx==1,1), X(idx==1,2), 'r');
scatter(X(idx==2,1), X(idx==2,2), 'g');
scatter(X(idx==3,1), X(idx==3,2), 'b');
scatter(C(:,1), C(:,2), 100, 'k', 'filled');
legend('Cluster 1', 'Cluster 2', 'Cluster 3', 'Centroids');
```
这个例子生成了一个100行2列的随机数据矩阵X,然后使用kmeans函数将它分成3个簇,并绘制出聚类结果。
阅读全文