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

原始數據

按行查看

歷史

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

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

相關文章

flink sql udf jar包_Flink 生態:一個案例快速上手 PyFlink

簡介&#xff1a; Flink 從 1.9.0 版本開始增加了對 Python 的支持&#xff08;PyFlink&#xff09;&#xff0c;在剛剛發布的 Flink 1.10 中&#xff0c;PyFlink 添加了對 Python UDFs 的支持&#xff0c;現在可以在 Table API/SQL 中注冊并使用自定義函數。PyFlink 的架構如何…

賽思互動:為什么越來越多的企業愿意接受SaaS服務?

SaaS是Software-as-a-Service&#xff08;軟件即服務&#xff09;的簡稱&#xff0c;隨著互聯網技術的發展和應用軟件的成熟&#xff0c; 在21世紀開始興起的一種完全創新的軟件應用模式。SaaS 應用軟件的價格通常為“全包”費用&#xff0c;囊括了通常的應用軟件許可證費、軟件…

使用Google Cloud Platform分散您的應用程序

by Simeon Kostadinov通過Simeon Kostadinov 使用Google Cloud Platform分散您的應用程序 (Decentralize your application with Google Cloud Platform) When first starting a new software project, you normally choose a certain programming language, a specific frame…

pta通訊錄排序用python實現,python實現將android手機通訊錄vcf文件轉化為csv

經常會遇到將手機通訊錄導出到電腦并轉化為在電腦中可編輯的情況&#xff0c;在網上搜索了很久當前不外乎兩種處理方式。1.使用電腦的outlook的通訊簿功能&#xff0c;將手機導出的vcf文件導入到outlook的通訊錄中&#xff0c;然后再導出為可編輯文件&#xff1b;2.是使用專用軟…

從物聯網發展歷程看區塊鏈挑戰

2009年&#xff0c;中本聰發布了第一個比特幣節點&#xff0c;五年后區塊鏈儼然成為一個規模巨大的產業。 雖然看起來&#xff0c;基于區塊鏈的新的商業時代距離我們似乎只有一步之遙&#xff0c;但在2016年&#xff0c;我們已經意識到區塊鏈產業不會那么快獲得成功。 早期的新…

編程軟件python是什么意思_程序員Python編程必備5大工具,你用過幾個?

Python是編程入門不錯的選擇&#xff0c;現在也有不少的程序員業余時間會研究這門編程語言。 學習Python有時候沒有第一時間找到好工具&#xff0c;會吃不少的苦頭。畢竟好的工具能將工作效率多倍速提升。下面W3Cschool給小伙伴們推薦Python編程必備的5大工具&#xff1a; 0、I…

Linux ReviewBoard安裝與配置

目錄 0. 引言1. 安裝步驟2. 配置站點 2.1 創建數據庫2.2 開始安裝2.3 修改文件訪問權限2.4 Web服務器配置2.5 修改django相關配置正文 回到頂部0. 引言 環境&#xff1a;Ubuntu 14.04 Server&#xff08;虛擬機&#xff09; 這篇文章里說的是review board官方的安裝方式&#x…

小程序 graphql_GraphQL應用程序中的五個常見問題(以及如何解決)

小程序 graphqlby Sacha Greif由Sacha Greif GraphQL應用程序中的五個常見問題(以及如何解決) (Five Common Problems in GraphQL Apps (And How to Fix Them)) 了解如何釋放GraphQL的強大功能而不會遭受缺點 (Learn to unlock the power of GraphQL without suffering its dr…

又拍云 php5月18號那,又拍云文檔中心

移動流量平臺概述又拍云手機流量營銷平臺&#xff0c;整合移動、電信、聯通三大運營商流量資源&#xff0c;將強大的流量營銷服務&#xff0c;通過接口等形式提供給商家合作伙伴&#xff0c;幫助商家開展品牌宣傳、APP/游戲/微信公眾號/網站的拉新與促活等多種營銷活動。通過接…

SQL SERVER2000將多行查詢結果拼接到一行數據及函數的創建

處理前的查詢結果如上圖&#xff1a; 通過借助SQL變量的定義 DECLARE Scope varchar(1000) DECLARE Num int SET Scope SET Num 1 SELECT ScopeScopeconvert(varchar(8),Num)、DescScope DescOper;, Num Num1 From fuel_contractQualityNew Where ContractID0120090001…

kindeditor簡單使用

先引入&#xff1a; <script src"/static/jquery-3.3.1.min.js"></script><script src"/static/kindeditor-4.1.11-zh-CN/kindeditor/kindeditor-all.js"></script> 基本使用參數&#xff1a; $(function () {KindEditor.create(#…

windows nginx c++讀取請求數據_輕松應對百萬并發的Nginx,搞懂LinuxC/C++這些技術棧升職加薪...

在深入了解 Nginx 各種原理及在極端場景下的一些錯誤場景處理時&#xff0c;需要首先理解什么是網絡事件。Nginx 是一個事件驅動的框架&#xff0c;所謂事件主要指的是網絡事件&#xff0c;Nginx 每個網絡連接會對應兩個網絡事件&#xff0c;一個讀事件一個寫事件。在深入了解 …

github 6月開源項目_我的開源項目如何在短短5天內在GitHub上贏得6,000顆星

github 6月開源項目Last month I launched two open source projects on GitHub. A few days later, my Front-End Checklist was showing more than 6,000 stars (17,000 as of writing). And I got 600 stars for my Resources-Front-End-Beginner project!上個月&#xff0c…

如何成為一位牛逼的高手

鄭昀 演講稿 創建于2016/9/15 最后更新于2016/9/21 很多人都在思考一個問題&#xff1a; 怎樣才能想出來一個牛逼的 idea&#xff1f; 有一位喜歡抽煙喝酒燙頭的大師 給出了答案&#xff1a; 這事兒吧&#xff0c;簡單&#xff0c;一共分兩步。 第一步先讓自己成為一個牛逼的人…

thinkphp html php文件,ThinkPHP生成靜態HTML文件

View.class.php/*** 加載模板和頁面輸出 可以返回輸出內容* access public* param string $templateFile 模板文件名* param string $charset 模板輸出字符集* param string $contentType 輸出類型* param string $content 模板輸出內容* param string $prefix 模板緩存前綴* r…

day01語法python入門_2

十&#xff1a;while循環 1.基本循環 while條件#循環體#如果條件為真&#xff0c;那么循環體則執行#如果條件為假&#xff0c;那么循環體不執行。2.break break 用于退出所有循環 while True:print "123"breakprint "456"3.continue while True:print &quo…

Python dict() 函數

Python dict() 函數 Python 內置函數 描述 dict() 函數用于創建一個字典。 語法 dict 語法&#xff1a; class dict(**kwarg) class dict(mapping, **kwarg) class dict(iterable, **kwarg) 參數說明&#xff1a; **kwargs -- 關鍵字mapping -- 元素的容器。iterable -- 可迭代…

貝塞爾曲線:原理、自定義貝塞爾曲線View、使用!!!

一、原理 轉自&#xff1a;http://www.2cto.com/kf/201401/275838.html Android動畫學習Demo(3) 沿著貝塞爾曲線移動的Property Animation Property Animation中最重要&#xff0c;最基礎的一個類就是ValueAnimator了。Property Animation利用ValueAnimator來跟蹤記錄對象屬性已…

ios pusher使用_如何使用JavaScript和Pusher構建實時圖

ios pusher使用by Rahat Khanna通過拉哈特漢娜 如何使用JavaScript和Pusher構建實時圖 (How to build a Realtime Graph using JavaScript and Pusher) The world needs everything uber-fast now. There are plenty of data streams being generated by different systems ev…

python數據分析與基礎實戰_《python數據分析與挖掘實戰》基礎概念

數據建模.png 數據挖掘的基本任務:利用分類與預測、聚類分析、關聯規則、時序模式、偏差檢測、智能推薦等方法&#xff0c;幫助企業提取數據中蘊含的商業價值&#xff0c;提高企業競爭力。 數據探索&#xff1a;異常值分析、缺失值分析、相關分析和周期性分析。 數據預處理:數據…