模糊C均值算法实现数据集的聚类分析

版权申诉
0 下载量 4 浏览量 更新于2024-10-04 收藏 3KB RAR 举报
资源摘要信息:"模糊C均值(Fuzzy C-Means,简称FCM)算法是一种用于数据聚类的方法。聚类是数据挖掘中的一项重要任务,它旨在将一组数据点划分为多个簇,使得同一簇内的数据点具有较高的相似性,而不同簇之间的数据点差异较大。不同于硬聚类算法(如K-Means),在硬聚类中,每个数据点仅属于一个簇,而FCM允许一个数据点属于多个簇,并引入了隶属度的概念,表示数据点属于某个簇的程度。 FCM算法的核心思想是通过迭代来优化一个目标函数,该目标函数衡量了数据点与簇中心之间的加权距离之和。在每次迭代中,算法更新数据点的隶属度值和簇中心的位置。隶属度值是一个介于0到1之间的数,它表示数据点属于各个簇的程度。簇中心则代表了聚类的平均位置。 在标题中提到的"Fcm.rar_cluster_fcm_fcm数据_模糊C均值_模糊C均值算法",我们可以看到文件名暗示了这个压缩包中包含了关于FCM算法的文件和数据。这可能包括了FCM算法的代码实现、数据集data以及根据数据集生成的cluster_n类簇的信息。 从描述中,我们知道这个资源用于将数据集data聚为cluster_n类,意味着资源可能包含了一个数据集,以及一个根据FCM算法处理这个数据集得到的聚类结果。在数据挖掘和机器学习的实际应用中,FCM算法可用于图像分割、市场细分、文档聚类等多种场景。 标签中提到的"cluster"指的聚类,"fcm"即模糊C均值的缩写,"fcm数据"可能指的是用于FCM算法训练或测试的数据集,"模糊c均值"和"模糊c均值算法"则是对FCM算法的别称。 在文件名称列表中,我们看到只有一个文件名为"Fcm",这表明压缩包中可能包含与FCM算法相关的程序代码、参数设置、执行脚本等文件。用户可以使用这些文件来复现FCM算法的聚类过程,或者在自己的数据集上应用FCM算法进行聚类分析。 总之,FCM算法是一种处理数据聚类问题的强大工具,它通过迭代求解使得数据点的隶属度值和簇中心位置优化,从而达到聚类的目的。在实际应用中,它能够处理数据的模糊性和重叠性,使得聚类结果更加符合现实世界的复杂性。"

INdex=[]; n=[]; for i=1:k A=NWP_cluster{i}; index=[]; for j=1:size(A,1) for x=1:size(A,2) index(j,x)=sum((A(j,:)-A(x,:)).^2)^0.5; end end INdex(k)=sum(sum(index))/(size(A,1)*size(A,2)-1)/2; n(k)=size(A,1)*size(A,2); end compactness=sum(INdex)/sum(n); disp(['紧致度为:',num2str(compactness)]) %% 计算欧氏距离 Dis=[]; for i=1:k Data=NWP_cluster{i}; oushi_dis=[]; Center=center(i,:); for j=1:size(Data,1) oushi_dis(j)=sum((Data(j,:)-Center).^2)^0.5; end Dis{i}=oushi_dis; end L=[]; first_label=[]; for i=1:k [~,location]=sort(Dis{i},'ascend'); Label=Label_cluster{i}; Label=Label(location); L{i}=Label(1:ceil(length(Label))*0.5); first_label=[first_label;Label_cluster{i}]; end %% 二次聚类 double_data=p_train([L{1};L{2};L{3}],:); Double_data=data([L{1};L{2};L{3}],:); double_power=power_date([L{1};L{2};L{3}],:); %% 聚类 k=3; [label,center]=FCM(double_data',k); %% double_label1=label(1:length(L{1})); double_label2=label(1+length(L{1}):length(L{1})+length(L{2})); double_label3=label(1+length(L{1})+length(L{2}):length(L{1})+length(L{2})+length(L{3})); double_label=[{double_label1} {double_label2} {double_label3}];%{double_label4} {double_label5} {double_label6} %% 找出同一类的样本 NWP_cluster=[]; cluster_power=[]; for i=1:k NWP_cluster{i}=double_data(find(label==i),:); cluster_power{i}=double_power(find(label==i),:); end NWP_power=[]; for i=1:k NWP_power{i}=[Double_data(find(label==i),:) double_power(find(label==i),:)]; end for i=1:k str=['NWP_power',num2str(i),'.csv']; csvwrite(str,NWP_power{i});

2023-07-14 上传