2011-10-12 2 views
1

나는이 K-means 클러스터링 코드를 내 자신의 파일에 넣고 싶습니다. 어떻게 임의의 정보를 만들지는 않지만 그것을 내 자신의 데이터 소스에서 읽으려면 어떻게해야합니까?kmeans matlab 코드 피드 자체 데이터 소스

%% generate sample data 
K = 3; 
numObservarations = 100; 
dimensions = 3; 
data = rand([numObservarations dimensions]); 

%% cluster 
opts = statset('MaxIter', 500, 'Display', 'iter'); 
[clustIDX, clusters, interClustSum, Dist] = kmeans(data, K, 'options',opts, ... 
    'distance','sqEuclidean', 'EmptyAction','singleton', 'replicates',3); 

%% plot data+clusters 
figure, hold on 
scatter3(data(:,1),data(:,2),data(:,3), 50, clustIDX, 'filled') 
scatter3(clusters(:,1),clusters(:,2),clusters(:,3), 200, (1:K)', 'filled') 
hold off, xlabel('x'), ylabel('y'), zlabel('z') 

%% plot clusters quality 
figure 
[silh,h] = silhouette(data, clustIDX); 
avrgScore = mean(silh); 


%% Assign data to clusters 
% calculate distance (squared) of all instances to each cluster centroid 
D = zeros(numObservarations, K);  % init distances 
for k=1:K 
    %d = sum((x-y).^2).^0.5 
    D(:,k) = sum(((data - repmat(clusters(k,:),numObservarations,1)).^2), 2); 
end 

% find for all instances the cluster closet to it 
[minDists, clusterIndices] = min(D, [], 2); 

% compare it with what you expect it to be 
sum(clusterIndices == clustIDX) 
+0

게시 한 코드에서 임의의 데이터를 생성하는 부분을 명확하게 식별 할 수 있습니까? 그렇다면 데이터 집합을 저장해야하는 변수입니다. – Pablo

+0

데이터 소스에 대해 자세히 알려주십시오. 파일에있는 데이터베이스 (형식은 무엇입니까?)에 있습니까 ... –

+0

@Laurent ', OP의 다른 질문을 읽으십시오. – Nzbuu

답변

4

임의의 데이터가 생성 라인 :

data = rand([numObservarations dimensions]); 

그냥 (예 : textscan로 아마 MATLAB 명령을 사용하여) 데이터를 읽는 코드이 줄을 교체 data라는 이름의 변수로.