Исходя из предыдущего вопроса FCM Кластеризация числовых данных и файла csv / excel Сейчас я пытаюсь выяснить, как взять полученную информацию и создать работоспособный файл .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);
У меня есть несколько типов данных, которые выглядят так:
Я попробовал описанный ниже метод для создания файла .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 для сравнения, но я не совсем уверен, смогу ли я создать кластерный двухмерный анализ из текущих данных?
Что мне нужно сделать, это нормализовать файл m из моегопредыдущий пост FCM Кластеризация числовых данных и файла csv / excel
Для нормализации данных:
найдите минимальный и максимальный набор данных
Нормализованная минимальная и максимальная шкала
Число в наборе данных
Нормализованное значение
Итак, первый вопрос: как найти минимальные и максимальные числа в моем наборе данных (м)
Шаг 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 вычисляют нормализованное значение любого числа х, используя уравнение
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