www.gusucode.com > fuzzy_featured 案例源码程序 matlab代码 > fuzzy_featured/fcmdemo_codepad.m

    %% Fuzzy C-Means Clustering
% This example shows how to perform fuzzy c-means clustering on
% 2-dimensional data.

% Copyright 2005-2013 The MathWorks, Inc.

%% What Is Fuzzy C-Means Clustering? 
% 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. 

%%
% 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(TM) function |fcm| performs FCM clustering. It
% 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.

%% Interactive Fuzzy C-Means Clustering Example
% Using the <matlab:fcmdemo fcmdemo> command, you can launch a GUI that
% lets you try out various parameter settings for the fuzzy c-means
% algorithm and observe the effect on the resulting 2-D clustering. 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
% c-means clustering process. The clustering itself is performed by the |fcm|
% function.
%
% <<../fcmdemo.png>>
%
%%
% *Figure 1:* GUI for Fuzzy C-Means Clustering.

%%
% 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.
%
%%
% You can also tune the 3 optional parameters for the FCM algorithm 
% (exponent, maximum number of iterations and minimum amount of 
% improvement) from the GUI and observe how the clustering process is 
% consequently altered.
%
%% Performing Fuzzy C-Means Clustering on Your Own Data
% The function |fcm| takes a data set and a desired number of clusters and
% returns optimal cluster centers and membership grades for each data
% point. You can use this information to build a fuzzy inference system by
% creating membership functions that represent the fuzzy qualities of each
% cluster.
%
% Here is the underlying code that performs the clustering. 

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

%%