经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » MATLAB » 查看文章
MATLAB实例:聚类初始化方法与数据归一化方法
来源:cnblogs  作者:凯鲁嘎吉  时间:2019/11/8 10:29:39  对本文有异议

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

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

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

注意:可以在elseif后面添加自己的方法。

原文链接:http://www.cnblogs.com/kailugaji/p/11818032.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号