में डेटा को दो वर्गों में विभाजित करना मेरे पास प्रत्येक क्लस्टर में एक्स, वाई (निर्देशांक) डेटा के दो क्लस्टर हैं और इसके प्रकार (1 कक्षा 1,2 कक्षा 2) को जानने के लिए एक मूल्य है। मैंने इन आंकड़ों को प्लॉट किया है लेकिन मैं चाहता हूं इन वर्गों को सीमा (दृष्टि से) के साथ विभाजित करना पसंद है। ऐसी चीज करने का काम क्या है। मैंने समोच्च कोशिश की लेकिन इससे मदद नहीं मिली!matlab
Q
matlab
6
A
उत्तर
11
इस classification समस्या पर विचार करें (का उपयोग कर Iris dataset):
आप आसानी से वियोज्य समूहों जिसके लिए आप पहले से सीमा के समीकरण पता के लिए छोड़कर, देख सकते हैं, सीमा नहीं मिल एक है तुच्छ काम ...
एक विचार discriminant analysis समारोह classify उपयोग करने के लिए सीमा (आप रैखिक और द्विघात सीमा के बीच एक विकल्प है) मिल रहा है।
प्रक्रिया को चित्रित करने के लिए निम्नलिखित एक पूर्ण उदाहरण है। कोड की आवश्यकता है सांख्यिकी टूलबॉक्स:
%# load Iris dataset (make it binary-class with 2 features)
load fisheriris
data = meas(:,1:2);
labels = species;
labels(~strcmp(labels,'versicolor')) = {'non-versicolor'};
NUM_K = numel(unique(labels)); %# number of classes
numInst = size(data,1); %# number of instances
%# visualize data
figure(1)
gscatter(data(:,1), data(:,2), labels, 'rb', '*o', ...
10, 'on', 'sepal length', 'sepal width')
title('Iris dataset'), box on, axis tight
%# params
classifierType = 'quadratic'; %# 'quadratic', 'linear'
npoints = 100;
clrLite = [1 0.6 0.6 ; 0.6 1 0.6 ; 0.6 0.6 1];
clrDark = [0.7 0 0 ; 0 0.7 0 ; 0 0 0.7];
%# discriminant analysis
%# classify the grid space of these two dimensions
mn = min(data); mx = max(data);
[X,Y] = meshgrid(linspace(mn(1),mx(1),npoints) , linspace(mn(2),mx(2),npoints));
X = X(:); Y = Y(:);
[C,err,P,logp,coeff] = classify([X Y], data, labels, classifierType);
%# find incorrectly classified training data
[CPred,err] = classify(data, data, labels, classifierType);
bad = ~strcmp(CPred,labels);
%# plot grid classification color-coded
figure(2), hold on
image(X, Y, reshape(grp2idx(C),npoints,npoints))
axis xy, colormap(clrLite)
%# plot data points (correctly and incorrectly classified)
gscatter(data(:,1), data(:,2), labels, clrDark, '.', 20, 'on');
%# mark incorrectly classified data
plot(data(bad,1), data(bad,2), 'kx', 'MarkerSize',10)
axis([mn(1) mx(1) mn(2) mx(2)])
%# draw decision boundaries between pairs of clusters
for i=1:NUM_K
for j=i+1:NUM_K
if strcmp(coeff(i,j).type, 'quadratic')
K = coeff(i,j).const;
L = coeff(i,j).linear;
Q = coeff(i,j).quadratic;
f = sprintf('0 = %g + %g*x + %g*y + %g*x^2 + %g*x.*y + %g*y.^2',...
K,L,Q(1,1),Q(1,2)+Q(2,1),Q(2,2));
else
K = coeff(i,j).const;
L = coeff(i,j).linear;
f = sprintf('0 = %g + %g*x + %g*y', K,L(1),L(2));
end
h2 = ezplot(f, [mn(1) mx(1) mn(2) mx(2)]);
set(h2, 'Color','k', 'LineWidth',2)
end
end
xlabel('sepal length'), ylabel('sepal width')
title(sprintf('accuracy = %.2f%%', 100*(1-sum(bad)/numInst)))
hold off
संबंधित मुद्दे
- 1. MATLAB: MATLAB
- 2. कैसे MATLAB में MATLAB
- 3. matlab
- 4. MATLAB
- 5. MATLAB
- 6. MATLAB
- 7. matlab
- 8. Matlab
- 9. matlab
- 10. MATLAB
- 11. MATLAB
- 12. MATLAB
- 13. MATLAB
- 14. matlab
- 15. MATLAB
- 16. Matlab
- 17. Matlab
- 18. matlab
- 19. MATLAB
- 20. Matlab
- 21. MATLAB
- 22. MATLAB
- 23. Matlab
- 24. MATLAB
- 25. MATLAB
- 26. matlab
- 27. MATLAB
- 28. MATLAB
- 29. matlab
- 30. MATLAB
+1 .... सुंदर! – Jacob
@Amro - क्या यह सिर्फ मुझे है, या दूसरा स्क्रीनशॉट गुम है? – Shai
@Shai: सिर्फ आप ही नहीं, कभी-कभी छवियों के लिए अपलोड की गई पुरानी छवियां किसी कारण से गायब हो जाती हैं ... वैसे भी मैंने ताजा छवियों के साथ उदाहरण अपडेट किया :) – Amro