本次实验打算实现的是分别用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;