【matlab】FCM函数用法和解释


在MATLAB中,FCM(Fuzzy C-Means)是一种模糊聚类算法,用于将数据分组。MATLAB提供了fcm函数来执行FCM聚类。

fcm函数的基本语法

[centers, U, objFcn] = fcm(data, cluster_n, exponent, options);

参数说明:

data:输入数据,是一个n-by-p矩阵,其中n是观测值的数量,p是特征的数量。
cluster_n:要生成的聚类数。
exponent:模糊度指数,通常设置为2。较高的值将增加聚类的模糊性。
options:可选参数,可以包含以下字段:
max_iter:最大迭代次数,默认为100。
min_improve:最小改进值,默认为1e-5。如果连续两次迭代之间的目标函数改进小于此值,则算法将停止。
init:初始化方法,默认为’cluster’,表示使用k-means算法进行初始化。还可以使用’rand’从随机值初始化聚类中心。
display:显示选项,默认为’iter’,表示在每次迭代时显示目标函数值。还可以使用’off’关闭显示。

返回值说明:

centers:聚类中心,是一个k-by-p矩阵,其中k是生成的聚类数,p是特征的数量。
U:隶属度矩阵,是一个n-by-k矩阵,其中n是观测值的数量,k是生成的聚类数。每个元素表示相应观测值属于相应聚类的隶属度。
objFcn:目标函数值,是一个包含每次迭代的目标函数值的向量。
下面是一个使用FCM算法对数据进行聚类的示例:

代码示例

>% 生成示例数据  
data = [randn(100,2)*0.5+ones(100,2);...  
        randn(100,2)*0.5-ones(100,2)];  
% 设置聚类数为2,模糊度指数为2  
cluster_n = 2;  
exponent = 2;  
% 执行FCM聚类  
[centers, U, objFcn] = fcm(data, cluster_n, exponent);  
% 显示聚类结果  
figure;  
plot(data(:,1), data(:,2),'o');  
hold on;  
maxU = max(U);  
index1 = find(U(1,:) == maxU);  
index2 = find(U(2,:) == maxU);  
line(data(index1,1), data(index1,2), 'linestyle','none','marker','o','color','g');  
line(data(index2,1), data(index2,2), 'linestyle','none','marker','x','color','r');  
hold off;
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值