gusucode.com > 模糊控制工具箱 fuzzy logic toolbox源码程序 > fuzzy/fuzdemos/fcmdemo_codepad.m

    %% Fuzzy C-means Clustering
% This demo illustrates performing fuzzy c-means clustering on
% 2-dimensional data.
%

% Copyright 2005 The MathWorks, Inc.

%%
% Clustering of numerical data forms the basis of many classification and
% system modeling algorithms. The purpose of clustering is to identify 
% natural groupings of data from a large data set to produce a concise 
% representation of a system's behavior. 
%
%% What is Fuzzy c-means clustering? 
%
% Fuzzy c-means (|fcm|) is a data clustering technique in which a dataset is
% grouped into n clusters with every datapoint in the dataset belonging to
% every cluster to a certain degree. For example, a certain datapoint that
% lies close to the center of a cluster will have a high degree of
% belonging or membership to that cluster and another datapoint that lies
% far away from the center of a cluster will have a low degree of belonging
% or membership to that cluster.
%
% The Fuzzy Logic Toolbox command line function, |fcm|, starts with an initial 
% guess for the cluster centers, which are intended to mark the mean 
% location of each cluster. The initial guess for these cluster centers is 
% most likely incorrect. Next, |fcm| assigns every data point a membership
% grade for each cluster. By iteratively updating the cluster centers and
% the membership grades for each data point, |fcm| iteratively  moves the
% cluster centers to the right location within a data set. This  iteration
% is based on minimizing an objective function that represents  the
% distance from any given data point to a cluster center weighted by  that
% data point's membership grade. 
%
%% What does this demo illustrate?
% This demo displays a GUI window and lets you try out various parameter
% settings for the fuzzy c-means algorithm and observe the clustering for 
% 2-D data. You can choose a sample data set and an arbitrary number of 
% clusters from the drop down menus on the right, and then click "Start" to 
% start the fuzzy clustering process.
%

fcmdemo;

%% 
% |fcm| is a command line function whose output is a list of n cluster centers
% and n membership grades for each data point. You can use the 
% information returned by fcm to build a fuzzy inference system by creating 
% membership functions to represent the fuzzy qualities of each cluster.
%
% Here is the underlying code that performs the clustering. 

data = load ('fcmdemodata.dat'); % load some sample data
n_clusters = 3; 
[center,U,obj_fcn] = fcm(data, n_clusters);

%%
% |n_clusters| refers to the number of clusters set by the user in the GUI
% and |data| refers to the dataset currently being visualized in the GUI.
% The function FCM performs the fuzzy c-means clustering on the data and in
% this case separates it into 3 clusters.
%
% You can also tune the 3 optional parameters for the FCM algorithm 
% (exponent, maximum number of iterations and minimum amount of 
% improvement) from the demo GUI and observe how the clustering process is 
% consequently altered.
%
%%
% Once the clustering is done, you can select one of the clusters by 
% clicking on it, and view the membership function surface by clicking the 
% "Plot MF" button. To get a better viewing angle, click and drag inside
% the figure to rotate the MF surface.
%


displayEndOfDemoMessage(mfilename)