matlab自带kfcm函数,kfcmFun.m
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相关推荐
- MATLAB自带PCA函数的参数含义及使用方法
目录 1.PCA函数的输入与输出参数 2.PCA函数的使用方法 参考文献: 1.PCA函数的输入与输出参数 function [coeff, score, latent, tsquared, expl ...
- matlab计算绝对值的导数,如何用matlab求带绝对值函数的导数? 你值得一看的技巧...
用matlab求函数的导数:如果一个函数表达式中有绝对值,那对该函数求导就需要注意啦!该函数可能在他的零点处导数不存在,所以我们不能用传统的方法求导,应该在零点处分别求左导数和右导数,如果左导数和右导 ...
- matlab自带滤波器函数小结(图像处理)
matlab自带滤波器函数小结(图像处理) 1 线性平滑滤波器 用MATLAB实现领域平均法抑制噪声程序: I=imread(' c4.jpg '); subplot(231) imshow(I) ...
- matlab自带滤波器函数
matlab自带滤波器函数小结(图像处理) 注:原文链接:http://www.ilovematlab.cn/forum.php?mod=viewthread&tid=215671 1 .线性 ...
- matlab 自带pca函数,matlab实现主成分分析 princomp函数 PCA中有这个函数
matlab实现主成分分析 princomp函数 最近看了些主成分分析,混迹Matlab论坛,翻了n多帖子,对princomp函数有了些了解. 在此只讲一些个人理解,并没有用术语,只求通俗. 贡献率: ...
- matlab knn,matlab自带knn函数
话说matlab的模式识别工具箱非常强大,对于一般应用来说基本不用自己编程,这就给科研带来了极大的便利. 之后估计会利用这个工具箱里的许多分类方法,比如KNN.BP.SVM等等: 现在就利用knn来进 ...
- matlab写函数教程,【Matlab基础】 自定义函数
函数--是编程的核心概念之一,是能够完成相对独立功能的代码封装成的模块. 在主程序中通过函数名和实参调用它,通过接口(即函数的输入.输出参数)来实现"通讯".所以在调用函数时,你只 ...
- MATLAB自带工具箱实现PCA降维代码
进行PCA降维,环境是MATLAB, 网上找了很多都是介绍PCA原理的,两篇介绍的不错的PCA 原理文章,只是想实现pCA的大可不必看.原理文章1 原理文章2 下面开始介绍用MATLAB自带工具包函 ...
- cameraman matlab 自带图,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
有时我们需要验证一些算法,但又不方便使用自己的数据,这时使用MATLAB自带的数据会带来很多便利,方便交流并且也不用担心未发表的工作会泄露.这里整理了一些MATLAB自带的数据-- 说明:[数据]表示 ...
最新文章
- (13)中值滤波和双边滤波
- 有哪些高效看文献的方法?
- Linux下编译安装Apache、php和svn
- android final函数,Android 回调函数 解析问题
- 官方公布94本预警期刊名单,其中5本高风险
- qt中树形控件QTreeWidget的项点击后获取该项的文本
- mysql主从配置对解决并发有用_MySQL主从配置,读写分离
- 《统计学习方法》—— 逻辑斯谛回归 与 最大熵模型 的介绍以及详细推导
- 字符串资源的内部格式
- 安卓手机如何使用第三方主题,制作专属自己喜好的主题
- icePDF去水印方法
- onap桂林版部署教程
- windows下CoffeeScript 的实现
- npm创建Vue工程【element UI】
- linux编辑状态a,linux 操作
- 女孩子有什么颜值高的蓝牙耳机推荐?双12五款高音质游戏蓝牙耳机分享
- iphone开发笔记和技巧总结
- 上海的大学计算机专业高考分数线公布,上海全部64所大学排名及分数线分析,想去魔都上学考生家长必看...
- PlayFair密码原理、代码
- 导航电子地图数据中POI搜索技术原理之二
热门文章
- Vue源码: 关于vm.$watch()内部原理
- 安装mariadb、安装Apache
- 如何基于 Notadd 构建 API (Laravel 写 API)
- LVS之一:基本命令和调度方法
- Server Develop (三) 多进程实现C/S
- Request 对象 错误 'ASP 0104 : 80004005' 解决方法
- 3d制作中需要注意的问题_浅谈线路板制作时需要注意的问题
- 白裤子变粉裤子怎么办_使用裤子构建构建数据科学的monorepo
- 423. 从英文中重建数字
- 5911. 模拟行走机器人 II