⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 simple_kmeans.m

📁 很好的matlab源代码 是kmeans算法的源代码 希望大家会喜欢
💻 M
字号:
function [means,Nmeans] = simple_kmeans(X,K,maxerr)% function [medias,Nmedias] = simple_kmedias(X,K,maxerr)%   Finds K prototypes representing the samples in data matrix X,%   where each row of X represents a sample. %   Iterates until maximum norm difference between%   prototypes found in successive iterations is < maxerr%   %   This script uses square Euclidean distance, %   but can be easily modified to use other metrics%% Output arguments%   means: matrix with each row a cluster prototype%   Nmeans: Number of samples in each cluster%% Example:%   X = [randn(100,1) ;  2+randn(100,1)];%   K = 2;%   [means Nmeans] = simple_kmeans(X,K,0)%%   Mauricio Martinez-Garcia, 2003,2007[Ndata, dims] = size(X);dist = zeros(1,K);% Initial prototype assignment (arbitrary)for i=1:K-1   means(i,:) = X(i,:);endmeans(K,:) = mean(X(K:Ndata,:));cmp = 1 + maxerr;while (cmp > maxerr)   % Sums (class) and data counters (Nclass) initialization   class = zeros(K,dims);   Nclass = zeros(K,1);   % Groups each elements to the nearest prototype   for i=1:Ndata      for j=1:K         % Euclidean distance from data to each prototype         dist(j) = norm(X(i,:)-means(j,:))^2;      end      % Find indices of minimum distance      index_min = find(~(dist-min(dist)));      % If there are multiple min distances, decide randomly      index_min = index_min(ceil(length(index_min)*rand));      class(index_min,:) = class(index_min,:) + X(i,:);      Nclass(index_min) = Nclass(index_min) + 1;   end   for i=1:K      class(i,:) = class(i,:) / Nclass(i);   end   % Compare results with previous iteration   cmp = 0;   for i=1:K      cmp = norm(class(i,:)-means(i,:));    end   % Prototype update   means = class;endNmeans = Nclass;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -