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)