设为首页收藏本站

EPS数据狗论坛

搜索
快捷导航
查看: 870|回复: 1

MATLAB实例:聚类初始化方法与数据归一化方法

[复制链接]

36

主题

331

金钱

519

积分

初级用户

发表于 2019-11-8 15:23:18 | 显示全部楼层 |阅读模式

1. 聚类初始化方法:init_methods.m
  1. function label=init_methods(data, K, choose)
  2. % 输入:无标签数据,聚类数,选择方法
  3. % 输出:聚类标签
  4. if choose==1
  5.     %随机初始化,随机选K行作为聚类中心,并用欧氏距离计算其他点到其聚类,将数据集分为K类,输出每个样例的类标签
  6.     [X_num, ~]=size(data);
  7.     rand_array=randperm(X_num);    %产生1~X_num之间整数的随机排列   
  8.     para_miu=data(rand_array(1:K), :);  %随机排列取前K个数,在X矩阵中取这K行作为初始聚类中心
  9.     %欧氏距离,计算(X-para_miu)^2=X^2+para_miu^2-2*X*para_miu',矩阵大小为X_num*K
  10.     distant=repmat(sum(data.*data,2),1,K)+repmat(sum(para_miu.*para_miu,2)',X_num,1)-2*data*para_miu';
  11.     %返回distant每行最小值所在的下标
  12.     [~,label]=min(distant,[],2);
  13. elseif choose==2
  14.     %用kmeans进行初始化聚类,将数据集聚为K类,输出每个样例的类标签
  15.     label=kmeans(data, K);
  16. elseif choose==3
  17.     %用FCM算法进行初始化
  18.     options=[NaN, NaN, NaN, 0];
  19.     [~, responsivity]=fcm(data, K, options);   %用FCM算法求出隶属度矩阵
  20.     [~, label]=max(responsivity', [], 2);
  21. end
复制代码


2. 数据归一化方法:normlization.m
  1. function data = normlization(data, choose)
  2. % 数据归一化
  3. if choose==0
  4.     % 不归一化
  5.     data = data;
  6. elseif choose==1
  7.     % Z-score归一化
  8.     data = bsxfun(@minus, data, mean(data));
  9.     data = bsxfun(@rdivide, data, std(data));
  10. elseif choose==2
  11.     % 最大-最小归一化处理
  12.     [data_num,~]=size(data);
  13.     data=(data-ones(data_num,1)*min(data))./(ones(data_num,1)*(max(data)-min(data)));
  14. end
复制代码

1

主题

60

金钱

83

积分

新手用户

发表于 2020-8-1 10:06:56 | 显示全部楼层
运行第一个代码的时候,上面显示不允许函数定义是为什么?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

客服中心
关闭
在线时间:
周一~周五
9:00-18:00
QQ群:
542280196
联系电话:
010-85786021-8017
在线咨询
客服中心

Powered by BFIT! X3.2© 2008-2018 BFIT Inc.

快速回复 返回顶部 返回列表