kfcm算法matlab實現,KFCM算法分析

function [center, U, obj_fcn] = KFCMClust(data, cluster_n, kernel_b,options)

% FCMClust.m? ?采用模糊C均值對數據集data聚為cluster_n類

%

% 用法:

%? ?1.??[center,U,obj_fcn] = KFCMClust(Data,N_cluster,kernel_b,options);

%? ?2.??[center,U,obj_fcn] = KFCMClust(Data,N_cluster,kernel_b);

%? ?3.??[center,U,obj_fcn] = KFCMClust(Data,N_cluster);

%

% 輸入:

%? ?data? ?? ???---- nxm矩陣,表示n個樣本,每個樣本具有m的維特征值

%? ?N_cluster? ?---- 標量,表示聚合中心數目,即類別數

%? ?kernel_b? ? ---- 高斯核參數b? ?? ?? ?? ?? ?? ?? ?? ?? ?(缺省值:150)

%? ?options? ???---- 4x1矩陣,其中

%? ?? ? options(1):??隸屬度矩陣U的指數,>1? ?? ?? ?? ?? ?? ?(缺省值: 2.0)

%? ?? ? options(2):??最大迭代次數? ?? ?? ?? ?? ?? ?? ?? ?? ?(缺省值: 100)

%? ?? ? options(3):??隸屬度最小變化量,迭代終止條件? ?? ?? ???(缺省值: 1e-5)

%? ?? ? options(4):??每次迭代是否輸出信息標志? ?? ?? ?? ?? ? (缺省值: 1)

% 輸出:

%? ?center? ?? ?---- 聚類中心

%? ?U? ?? ?? ???---- 隸屬度矩陣

%? ?obj_fcn? ???---- 目標函數值

%? ?Example:

%? ?? ? data = rand(100,2);

%? ?? ? [center,U,obj_fcn] = KFCMClust(data,2);

%? ?? ? plot(data(:,1), data(:,2),'o');

%? ?? ? hold on;

%? ?? ? maxU = max(U);

%? ?? ? index1 = find(U(1,:) == maxU);

%? ?? ? index2 = find(U(2,:) == maxU);

%? ?? ? line(data(index1,1),data(index1,2),'marker','*','color','g');

%? ?? ? line(data(index2,1),data(index2,2),'marker','*','color','r');

%? ?? ? plot([center([1 2],1)],[center([1 2],2)],'*','color','k')

%? ?? ? hold off;

%? ?Author: Genial

%? ?Date:? ?2005.5

%??一副圖中顯示多方圖片:montage

error(nargchk(2,4,nargin));? ? % 檢查輸入參數個數

data_n = size(data, 1); % 求出data的第一維(rows)數,即樣本個數

in_n = size(data, 2);? ?% 求出data的第二維(columns)數,即特征值長度,目前沒有用

% 默認操作參數

default_b = 150;? ?? ?? ?% 高斯核函數參數

default_options = [2;? ? ? ? % 隸屬度矩陣U的指數

100;? ?? ?? ?? ?? ? % 最大迭代次數

1e-5;? ?? ?? ?? ?? ?% 隸屬度最小變化量,迭代終止條件

1];? ?? ?? ?? ?? ???% 每次迭代是否輸出信息標志

if nargin == 2,

kernel_b = default_b;

options = default_options;

elseif nargin == 3,

options = default_options;

else? ? % 分析有options做參數時候的情況

% 如果輸入參數個數是3那么就調用默認的option;

% 如果用戶給的opition數少于4個那么就將剩余的默認option加上;

if length(options) < 4,

tmp = default_options;

tmp(1:length(options)) = options;

options = tmp;

end

% 返回options中是數的值為0(如NaN),不是數時為1

nan_index = find(isnan(options)==1);

% 將denfault_options中對應位置的參數賦值給options中不是數的位置.

options(nan_index) = default_options(nan_index);

if options(1) <= 1,

% 如果options中的指數m不超過1報錯

error('The exponent should be greater than 1!');

end

end

% 將options 中的分量分別賦值給四個變量;

expo = options(1);? ?? ?? ? % 隸屬度矩陣U的指數

max_iter = options(2);? ? ? ? ? ? ? ? % 最大迭代次數

min_impro = options(3);? ? ? ? ? ? ? ? % 隸屬度最小變化量,迭代終止條件

display = options(4);? ? ? ? ? ? ? ? % 每次迭代是否輸出信息標志

obj_fcn = zeros(max_iter, 1);? ? ? ? % 初始化輸出參數obj_fcn

U = initkfcm(cluster_n, data_n);? ? ? ? % 初始化模糊分配矩陣,使U滿足列上相加為1

% 初始化聚類中心:從樣本數據點中任意選取cluster_n個樣本作為聚類中心。當然,

% 如果采用某些先驗知識選取中心或許能夠達到加快穩定的效果,但目前不具備這功能

index = randperm(data_n);? ?% 對樣本序數隨機排列

center_old = data(index(1:cluster_n),:);??% 選取隨機排列的序數的前cluster_n個

% Main loop??主要循環

for i = 1:max_iter,

% 在第k步循環中改變聚類中心ceneter,和分配函數U的隸屬度值;

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

if display,

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

end

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

% 終止條件判別

if i > 1,

if abs(obj_fcn(i) - obj_fcn(i-1)) < min_impro, break; end,

end

end

iter_n = i;? ? ? ? % 實際迭代次數

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

% 子函數

function U = initkfcm(cluster_n, data_n)

% 初始化fcm的隸屬度函數矩陣

% 輸入:

%? ?cluster_n? ?---- 聚類中心個數

%? ?data_n? ?? ?---- 樣本點數

% 輸出:

%? ?U? ?? ?? ???---- 初始化的隸屬度矩陣

U = rand(cluster_n, data_n);

col_sum = sum(U);

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/529825.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529825.shtml
英文地址,請注明出處:http://en.pswp.cn/news/529825.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

matlab中的terminator模塊,2.2 Ground 及 Terminator模塊

課時&#xff1a;117節課時長&#xff1a;20.1小時課級&#xff1a;中級提高simulink是matlab中的一種可視化仿真工具&#xff0c; 是一種基于matlab的框圖設計環境&#xff0c;是實現動態系統建模、仿真和分析的一個軟件包&#xff0c;被廣泛應用于線性系統、非線性系統、數字…

matlab 柯西黎曼方程,【判斷題】柯西-黎曼方程成立是函數解析的必要條件.

參考答案如下判斷【判斷題】核糖體的沉降系數等于大小亞基沉降系數的總和。題柯【其它】We ______________________________________ (投入到各項校園課外活動中) on campus.西黎【單選題】起動機與蓄電池的連接線蓄電池與車架的搭鐵線則采用( )。 (2.0分)曼方【簡答題】作業選…

取整函數php,php取整函數三個例子

本節內容&#xff1a;php取整函數用法1&#xff0c;php取整函數 ceil -- 取最大整數float ceil ( float value )返回不小于 value 的下一個整數&#xff0c;value 如果有小數部分則進一位。ceil() 返回的類型仍然是 float&#xff0c;因為 float 值的范圍通常比 integer 要大。…

python執行過程打印,如何在pytest運行過程中看到正常的打印輸出?

喬在接受的答案中提出了一個評論 &#xff0c;他問道&#xff1a;有沒有辦法打印到控制臺并捕獲輸出&#xff0c;以便它顯示在junit報告中&#xff1f;在UNIX中&#xff0c;這通常被稱為開球 。 理想情況下&#xff0c;開球而不是捕捉將是py.test默認。 非理想情況下&#xff0…

cfar恒虛警matlab實現,一種用于距離副瓣抑制的自適應恒虛警方法與流程

本發明涉及脈沖壓縮雷達數字信號處理技術領域。背景技術&#xff1a;在傳統的真空管體制雷達中&#xff0c;由于發射占空比受限&#xff0c;通過設計較低的雷達重復發射頻率實現遠距離的目標探測&#xff0c;但由于發射的是簡單的脈沖調制波形&#xff0c;重復頻率降低和脈寬加…

修改oracle數據連接數據庫,如何修改oracle數據庫的連接數

如何修改oracle數據庫的連接數查詢數據庫當前進程的連接數&#xff1a;select count(*) from v$process;查看數據庫當前會話的連接數&#xff1a;elect count(*) from v$session;查看數據庫的并發連接數&#xff1a;select count(*) from v$session where statusACTIVE;查看當前…

oracle導出中文utf8亂碼,ORACLE導入導出后發生中文亂碼的原因及解決辦法

從數據庫服務器上使用exp導出時顯示如下&#xff1a;[oraclekf15-1]:/users/oracle>$ exp username/passwdkf15-1/i1000 tablestable_name filetable_name_unix.dmp satisticsnone buffer1000000Export: Release 10.2.0.4.0 - Production on 星期四 8月 26 16:37:08 2010Cop…

基于matlab的圖解粒度參數計算,基于MATLAB的圖解粒度參數計算

摘要粒度特征是沉積物的基本特征之一。計算沉積物粒度參數的方法主要有矩法和圖解法兩種&#xff0c;其中圖解法必須通過手工作圖求累積曲線&#xff0c;是一項相當繁雜的勞動&#xff0c;不利于計算大量樣品。文中提出的方法將圖解求沉積物樣品的累積曲線百分位數的過程轉化為…

oracle判斷數據出現交叉,Oracle!你必須要知道的Knowledge points(一)

一、入門oracle有四個用戶&#xff0c;分別為sys、system、sysman和scott,其中sys是oracle權限最高的用戶&#xff0c;類似于Linux系統的root&#xff0c;scott是示例用戶&#xff0c;上課就以這個用戶里的三張員工表empno、dept、salgrade作為示例來授課。啟動服務1. 快捷鍵ct…

php上傳中文圖片,用PHP處理圖片文件的上傳

這篇文章主要介紹了關于用PHP處理圖片文件的上傳&#xff0c;有著一定的參考價值&#xff0c;現在分享給大家&#xff0c;有需要的朋友可以參考一下1.html文件form表單注意。enctype屬性代碼&#xff1a;<?php require(../../public/common/config.php);$sqlClass "s…

nodejs+php+aes加密解密,php,crypto_php與nodejs的加密數據互通,php,crypto,node.js - phpStudy...

php與nodejs的加密數據互通nodejs的加密解密代碼示例如下&#xff1a;#!/usr/bin/env nodevar crypto require(crypto);//解密function decode(cryptkey, iv, secretdata) {vardecipher crypto.createDecipheriv(aes-256-cbc, cryptkey, iv),decoded decipher.update(secret…

360 php offer,審批終于通過了,從面試到拿到奇虎360的offer已經失…

審批終于通過了&#xff0c;從面試到拿到奇虎360的offer已經失業兩周了( ?????)?- - -?&#xfeff;小運營大太陽&#xff1a;沾沾喜氣程序猿.南蘭&#xff1a;沾沾喜氣360員工&#xff1a;歡迎來到酒仙橋第一養老院美團點評員工&#xff1a;[害羞]沾沾喜氣盜圣白展堂&a…

linux中的進程權限是,Linux中權限,進程,服務的簡單操作

1.權限存在意義- rw-r-r-r-- 1 root root 216 May 12 2017 /mnt/rht[1] [2] [3] [4] [5] [6] [7] [8][1] 文件類型-普通文件d目錄l軟鏈接ssocketc文件權限[2] 文件權限rw-|r--|r--u g ouuserggroupoo…

linux 中斷 進程,linux中斷分上下部分原因

中斷處理程序在處理中斷時起到了關鍵作用&#xff0c;也是一個中斷程序必不可少的部分。不過&#xff0c;現如今的中斷處理流程都會分為兩部分&#xff1a;上半部分(top half)和下半部分(bottom half)。為什么要將一個中斷分為如此兩部分&#xff1f;下面的幾個經典原因可以很好…

linux 運行eclipse,解決Linux下Eclipse啟動錯誤

下載Eclipse后一打開就報錯&#xff1a;JVM terminated. Exit code-1-Xms40m-Xmx256m-XX:MaxPermSize256m-Djava.class.path/usr/local/eclipse/plugins/org.eclipse.equinox.launcher_1.0.201.R35x_v20090715.jar-os linux-ws gtk-arch x86-showsplash /usr/local/eclipse//pl…

linux家庭云服務器,linux服務器云(linux家用云服務器)

可以。注&#xff1a;云服務器有Linux版本&#xff0c;實際上就是Linux在本地環境放到了云上公網環境中&#xff0c;其它操作都是一樣的。云主機是集群服務器開發出的虛擬的機器&#xff0c;所以&#xff0c;這個因素不用考慮就問題不大。需要linux系統直接在預裝系統安裝就可以…

linux13位時間戳,Kotlin 處理Linux時間戳

思路1. 獲取時間可以采用的方式有直接獲取系統時間System.currentTimeMillis()或者使用Calendar類獲取時間2. 處理時間在使用Calendar時&#xff0c;可以直接由Calendar的set方法對于時間進行設置由于Calendar的時間格式并不是我們希望得到的Linux時間戳格式&#xff0c;所以我…

linux腳本done報錯,linux – 如何在shell腳本中處理錯誤/異常?

下面是我在bash中執行的腳本.它工作正常.fileexist0for i in $( ls /data/read-only/clv/daily/Finished-HADOOP_EXPORT_&processDate#.done); domv /data/read-only/clv/daily/Finished-HADOOP_EXPORT_&processDate#.done /data/read-only/clv/daily/archieve-wip/fil…

linux 建立交叉編譯環境變量,ARM-Linux-gcc-4.4.3交叉編譯環境終于搭建

Linux交叉編譯環境終于搭建完成具體步驟&#xff1a;0、軟件請到友善之臂的官網下載1、解壓tar zxvf arm-linux-gcc-4.4.3-20100728.tar.gz-C/(別make了&#xff0c;直接解壓后就可以)2、設置環境變量&#xff1a;首先vi ~/.bashrc然后在最后加上exportPATH$PATH:/opt/Friendly…

查詢linux版本信息 sp,查看Linux系統版本和內核信息

Linux查看Linux系統版本信息1. 查看內核版本1) 方法一&#xff1a;登錄到linux執行cat /proc/version[[email protected]_32bit_ip12 ~]$ cat /proc/versionLinux version 2.6.18-194.el5 ([email protected]) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-48)) #1 SMP Fri Apr…