title: MATLAB - Classification output
body: <p>My programme uses K-means clustering of a set amount of clusters from the user. For this k=4 but I would like to run the clustered information through matlabs naive bayes classifier afterwards.</p>
  
  <p>Is there a way to split the clusters up and feed them into different naive classifiers in matlab?</p>
  
  <p>Naive Bayes:</p>
  
  <pre><code>class  = classify(test,training, target_class, 'diaglinear');
  </code></pre>
  
  <p>K-means:</p>
  
  <pre><code>    %% generate sample data
  K = 4;
  numObservarations = 5000;
  dimensions = 42;
  %% 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), 5, clustIDX, 'filled')
  scatter3(clusters(:,1),clusters(:,2),clusters(:,3), 100, (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)
  </code></pre>
  
  <p>something like outputing k clusters to a format k1,k2,k3 then having the naive classifier pick those up, instead of test it would be k1,k2.. etc</p>
  
  <pre><code>class  = classify(k1,training, target_class, 'diaglinear');
  </code></pre>
  
  <p>But I just dont know how to send the output of the k clusters in matlab to some type of format? (really new to this programme) </p>
  
  <p><strong>EDIT</strong></p>
  
  <pre><code>training = [1;0;-1;-2;4;0]; % this is the sample data.
  target_class = ['posi';'zero';'negi';'negi';'posi';'zero'];% This should have the same number of rows as training data. The elements and the class on the same row should correspond.
  % target_class are the different target classes for the training data; here 'positive' and 'negetive' are the two classes for the given training data
  
  % Training and Testing the classifier (between positive and negative)
  test = 10*randn(10,1) % this is for testing. I am generating random numbers.
  class  = classify(test,training, target_class, 'diaglinear')  % This command classifies the test data depening on the given training data using a Naive Bayes classifier
  
  % diaglinear is for naive bayes classifier; there is also diagquadratic
  </code></pre>