function [center, U, obj_fcn] = kfcmFun(data, cluster_n,maxit, kernel_b,expo)

data_n = size(data, 1); % 求出data的第一维(rows)数,即样本个数

obj_fcn = zeros(100, 1);% 初始化输出参数obj_fcn

U = initkfcm(cluster_n, data_n);% 初始化模糊分配矩阵,使U满足列上相加为1

index = randperm(data_n); % 对样本序数随机排列

center_old = data(index(1:cluster_n),:); % 选取随机排列的序数的前cluster_n个

for i = 1:maxit

[U, center, obj_fcn(i)] = stepkfcm(data,U,center_old, expo, kernel_b);

fprintf('Iteration count = %d, obj. fcn = %f\n', i, obj_fcn(i));

center_old = center; % 用新的聚类中心代替老的聚类中心

% 终止条件判别

if i > 1

if abs(obj_fcn(i) - obj_fcn(i-1)) < 1e-5

break;

end

end

end

iter_n = i;

obj_fcn(iter_n+1:100) = [];

function U = initkfcm(cluster_n, data_n)

% 初始化fcm的隶属度函数矩阵

U = rand(cluster_n, data_n);

col_sum = sum(U);

U = U./col_sum(ones(cluster_n, 1), :);

function [U_new,center_new,obj_fcn] = stepkfcm(data,U,center,expo,kernel_b)

% 模糊C均值聚类时迭代的一步

feature_n = size(data,2); % 特征维数

cluster_n = size(center,1); % 聚类个数

mf = U.^expo;

% 计算新的聚类中心;

KernelMat = gaussKernel(center,data,kernel_b); % 计算高斯核矩阵

num = mf.*KernelMat * data;

den = sum(mf.*KernelMat,2);

center_new = num./(den*ones(1,feature_n));

% 计算新的隶属度矩阵;

kdist = distkfcm(center_new, data, kernel_b); % 计算距离矩阵

obj_fcn = sum(sum((kdist.^2).*mf)); % 计算目标函数值

tmp = kdist.^(-1/(expo-1));

U_new = tmp./(ones(cluster_n, 1)*sum(tmp));

function out = distkfcm(center, data, kernel_b)

% 计算样本点距离聚类中心的距离

cluster_n = size(center, 1);

data_n = size(data, 1);

out = zeros(cluster_n, data_n);

for i = 1:cluster_n % 对每个聚类中心

vi = center(i,:);

out(i,:) = 2-2*gaussKernel(vi,data,kernel_b);

end

function out = gaussKernel(center,data,kernel_b)

% 高斯核函数计算

dist = zeros(size(center, 1), size(data, 1));

for k = 1:size(center, 1)

dist(k, :) = sqrt(sum(((data-ones(size(data,1),1)*center(k,:)).^2)',1));

end

out = exp(-dist.^2/kernel_b^2);

一键复制

编辑

Web IDE

原始数据

按行查看

历史

matlab自带kfcm函数,kfcmFun.m相关推荐

  1. MATLAB自带PCA函数的参数含义及使用方法

    目录 1.PCA函数的输入与输出参数 2.PCA函数的使用方法 参考文献: 1.PCA函数的输入与输出参数 function [coeff, score, latent, tsquared, expl ...

  2. matlab计算绝对值的导数,如何用matlab求带绝对值函数的导数? 你值得一看的技巧...

    用matlab求函数的导数:如果一个函数表达式中有绝对值,那对该函数求导就需要注意啦!该函数可能在他的零点处导数不存在,所以我们不能用传统的方法求导,应该在零点处分别求左导数和右导数,如果左导数和右导 ...

  3. matlab自带滤波器函数小结(图像处理)

    matlab自带滤波器函数小结(图像处理)   1 线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) ...

  4. matlab自带滤波器函数

    matlab自带滤波器函数小结(图像处理) 注:原文链接:http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=215671 1 .线性 ...

  5. matlab 自带pca函数,matlab实现主成分分析 princomp函数 PCA中有这个函数

    matlab实现主成分分析 princomp函数 最近看了些主成分分析,混迹Matlab论坛,翻了n多帖子,对princomp函数有了些了解. 在此只讲一些个人理解,并没有用术语,只求通俗. 贡献率: ...

  6. matlab knn,matlab自带knn函数

    话说matlab的模式识别工具箱非常强大,对于一般应用来说基本不用自己编程,这就给科研带来了极大的便利. 之后估计会利用这个工具箱里的许多分类方法,比如KNN.BP.SVM等等: 现在就利用knn来进 ...

  7. matlab写函数教程,【Matlab基础】 自定义函数

    函数--是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块. 在主程序中通过函数名和实参调用它,通过接口(即函数的输入.输出参数)来实现"通讯".所以在调用函数时,你只 ...

  8. MATLAB自带工具箱实现PCA降维代码

    进行PCA降维,环境是MATLAB, 网上找了很多都是介绍PCA原理的,两篇介绍的不错的PCA 原理文章,只是想实现pCA的大可不必看.原理文章1  原理文章2 下面开始介绍用MATLAB自带工具包函 ...

  9. cameraman matlab 自带图,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...

    有时我们需要验证一些算法,但又不方便使用自己的数据,这时使用MATLAB自带的数据会带来很多便利,方便交流并且也不用担心未发表的工作会泄露.这里整理了一些MATLAB自带的数据-- 说明:[数据]表示 ...

最新文章

  1. (13)中值滤波和双边滤波
  2. 有哪些高效看文献的方法?
  3. Linux下编译安装Apache、php和svn
  4. android final函数,Android 回调函数 解析问题
  5. 官方公布94本预警期刊名单,其中5本高风险
  6. qt中树形控件QTreeWidget的项点击后获取该项的文本
  7. mysql主从配置对解决并发有用_MySQL主从配置,读写分离
  8. 《统计学习方法》—— 逻辑斯谛回归 与 最大熵模型 的介绍以及详细推导
  9. 字符串资源的内部格式
  10. 安卓手机如何使用第三方主题,制作专属自己喜好的主题
  11. icePDF去水印方法
  12. onap桂林版部署教程
  13. windows下CoffeeScript 的实现
  14. npm创建Vue工程【element UI】
  15. linux编辑状态a,linux 操作
  16. 女孩子有什么颜值高的蓝牙耳机推荐?双12五款高音质游戏蓝牙耳机分享
  17. iphone开发笔记和技巧总结
  18. 上海的大学计算机专业高考分数线公布,上海全部64所大学排名及分数线分析,想去魔都上学考生家长必看...
  19. PlayFair密码原理、代码
  20. 导航电子地图数据中POI搜索技术原理之二

热门文章

  1. Vue源码: 关于vm.$watch()内部原理
  2. 安装mariadb、安装Apache
  3. 如何基于 Notadd 构建 API (Laravel 写 API)
  4. LVS之一:基本命令和调度方法
  5. Server Develop (三) 多进程实现C/S
  6. Request 对象 错误 'ASP 0104 : 80004005' 解决方法
  7. 3d制作中需要注意的问题_浅谈线路板制作时需要注意的问题
  8. 白裤子变粉裤子怎么办_使用裤子构建构建数据科学的monorepo
  9. 423. 从英文中重建数字
  10. 5911. 模拟行走机器人 II