Matlab集群和数据格式

时间:2011-10-11 13:28:45

标签: matlab dataset cluster-analysis data-modeling fuzzy

从上一个问题引出FCM Clustering numeric data and csv/excel file我现在正试图弄清楚如何获取输出信息并创建一个可用的.dat文件,以便在matlab中用于聚类。

    %# read the list of features
fid = fopen('kddcup.names','rt');
C = textscan(fid, '%s %s', 'Delimiter',':', 'HeaderLines',1);
fclose(fid);

%# determine type of features
C{2} = regexprep(C{2}, '.$','');              %# remove "." at the end
attribNom = [ismember(C{2},'symbolic');true]; %# nominal features

%# build format string used to read/parse the actual data
frmt = cell(1,numel(C{1}));
frmt( ismember(C{2},'continuous') ) = {'%f'}; %# numeric features: read as number
frmt( ismember(C{2},'symbolic') ) = {'%s'};   %# nominal features: read as string
frmt = [frmt{:}];
frmt = [frmt '%s'];                           %# add the class attribute

%# read dataset
fid = fopen('kddcup.data','rt');
C = textscan(fid, frmt, 'Delimiter',',');
fclose(fid);

%# convert nominal attributes to numeric
ind = find(attribNom);
G = cell(numel(ind),1);
for i=1:numel(ind)
    [C{ind(i)},G{i}] = grp2idx( C{ind(i)} );
end

%# all numeric dataset
M = cell2mat(C);

我有几种类型的数据,如下所示:

enter image description here

我尝试了以下方法来创建.dat文件,但却出现了错误:

>> a = load('matlab.mat');
>> save 'matlab.dat' a -ascii
Warning: Attempt to write an unsupported data type
to an ASCII file.
    Variable 'a' not written to file. 
>> a = load('data.mat');
>> save 'matlab.dat' a -ascii
Warning: Attempt to write an unsupported data type
to an ASCII file.
    Variable 'a' not written to file. 
>> save 'matlab.dat' a 
>> findcluster('matlab.dat')
??? Error using ==> load
Number of columns on line 1 of ASCII file
C:\Users\Garrith\Documents\MATLAB\matlab.dat
must be the same as previous lines.

Error in ==> findcluster>localloadfile at 471
       load(filename);

Error in ==> findcluster at 160
       localloadfile(filename, param);

Matlabs群集工具适用于多维数据集,但仅显示在两个数据集上 尺寸。然后使用x和y轴进行比较,但我不太确定我是否能够从当前数据创建聚类2d分析?

我需要做的是从我之前的帖子FCM Clustering numeric data and csv/excel file

中规范化m文件

规范化数据:

  1. 找到最小和最大数据集

  2. 规范化比例最小值和最大值

  3. 数据集中的数字

  4. 标准化值

  5. 所以第一个问题是如何在我的数据集中找到最小和最大数字(m)

    第1步: 查找数据集中的最大值和最小值,并使用变量大写A和大写B表示它们:

    Lets say minimum number A = 92000 
    and max number say B = 64525000
    

    第2步规范化 确定最小和最大数字,并将变量设置为小写a和b 不确定如何在matlab中执行此操作(不确定如何规范化数据开始)

    set the minimum = a = 1
    set the maximum = b = 10
    

    第3步 使用等式

    计算任意数x的归一化值
    A = 92000
    B = 64525000
    a = 1
    b = 10
    x = 2214000
    
    a + (x - A)(b - a)/(B - A)
    1+(2214000 - 92000)(10-1)/(6425000 - 92000)
    = 4.01
    

1 个答案:

答案 0 :(得分:1)

查看问题中间的错误。 a = load(matfile)返回一个结构,基于ASCII的MAT文件格式不支持该结构。尝试阅读文档。