模糊算法--k-means算法和fuzzy-c-means算法的比较的matlab实现

这篇博客通过MATLAB实现k-means和fuzzy c-means算法对90后群体消费数据进行分类,比较两者在速度和精度上的差异。k-means算法耗时4.291s,fuzzy c-means耗时0.387s,后者在精度和分类清晰度上表现更优。
摘要由CSDN通过智能技术生成

本次实验打算实现的是分别用k-means算法和fuzzy-c-means算法对客户群体消费水平进行分类,并比较两个算法的差异

输入:1000个90后群体的月收入和月消费和月在网购上的消费数据集三维输入。

输出:将这些群体分成五类以颜色区分输出类别

用途:公司可以根据这些群体的收入和消费水平和花在网购上的水平区分出自己想要的目标用户再进一步根据目标用户制定不同的销售策略


下面是实验的概要设计

   k-means算法:

      1.读取数据

      2.设置聚类数据

      3.初始化聚类中心

      4.随机产生聚类中心

      5.计算各点到每个类的距离

      6.求最小距离

      7.显示聚类后的数据  

   fuzzy-c-means算法:

      1、读取数据

      2、对给定的数据集应用模糊c均值聚类方法进行聚类

      3、满足停止误差准则时,聚类过程结束

      4、显示聚类后的数据


运行的K-means算法代码如下:

clear all;close all;clc;
%  三类数据合成一个不带标号的数据类
load('data1.mat');
data=unnamed; 
N=5;%设置聚类数目
[m,n]=size(data);
pattern=zeros(m,n+1);
center=zeros(N,n);%初始化聚类中心
pattern(:,1:n)=data(:,:);
for x=1:N
    center(x,:)=data( randi(300,1),:);%第一次随机产生聚类中心
end
while 1
distence=zeros(1,N);
num=zeros(1,N);
new_center=zeros(N,n);
 
for x=1:m
    for y=1:N
    distence(y)=norm(data(x,:)-center(y,:));%计算到每个类的距离
    end
    [~, temp]=min(distence);%求最小的距离
    pattern(x,n+1)=temp;         
end
k=0;
for y=1:N
    for x=1:m
        if pattern(x,n+1)==y
           new_center(y,:)=new_center(y,:)+pattern(x,1:n);
           num(y)=num(y)+1;
        
  • 2
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值