日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > 循环神经网络 >内容正文

循环神经网络

matlab自带kfcm函数,kfcmFun.m

發布時間:2023/12/9 循环神经网络 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。