Tôi có hai cụm dữ liệu mỗi cụm có x, y (tọa độ) và một giá trị để biết đó là loại (1 lớp1,2 lớp 2) .Tôi đã vẽ các dữ liệu này nhưng tôi sẽ muốn chia các lớp này với ranh giới (trực quan). chức năng để làm điều đó là gì. tôi đã cố gắng đường viền nhưng nó đã không giúp đỡ!Tách dữ liệu thành hai lớp trực quan trong MATLAB
6
A
Trả lời
11
Hãy xem xét vấn đề này classification (sử dụng Iris dataset):
Như bạn thấy, ngoại trừ cho các cụm dễ dàng tách mà bạn biết phương trình của ranh giới trước, tìm ra ranh giới không phải là một nhiệm vụ tầm thường ...
một ý tưởng là sử dụng chức năng discriminant analysisclassify để tìm ra ranh giới (bạn có một sự lựa chọn giữa tuyến tính và ranh giới bậc hai).
Sau đây là ví dụ hoàn chỉnh để minh họa quy trình. Mã này đòi hỏi phải kê Toolbox:
%# 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
Các vấn đề liên quan
- 1. Tách dữ liệu thành các bộ dữ liệu đào tạo/thử nghiệm trong MATLAB?
- 2. Các kiểu dữ liệu Javascript trực quan
- 3. Tách một tuple thành nhiều bộ dữ liệu trong Pig
- 4. Thư viện trực quan hóa dữ liệu java miễn phí?
- 5. Kết hợp trực quan hóa dữ liệu khí quyển
- 6. Các kỹ thuật để trực quan hóa dữ liệu
- 7. Công cụ trực quan hóa dữ liệu cho dự án dữ liệu địa lý
- 8. Tôi làm cách nào để tách riêng Lớp kinh doanh và Lớp dữ liệu của mình?
- 9. vùng Fill giữa hai thành phần kết nối trong MATLAB
- 10. Tách một mảng trong MATLAB
- 11. Phân tách mối quan hệ thành BCNF
- 12. Phân tách số nguyên thành hai byte
- 13. Tiêm phụ thuộc trong JavaScript? (Đối với dữ liệu-driven trực quan)
- 14. Làm thế nào để vẽ hai số liệu trong MATLAB
- 15. Ellipse xung quanh các dữ liệu trong MATLAB
- 16. Tách một chuỗi thành hai phần
- 17. đọc dữ liệu từ Matlab vào Java
- 18. Lớp không có thành viên dữ liệu trong C++
- 19. Công cụ nào có thể so sánh trực quan hai phần trong cùng một tệp?
- 20. khởi In-lớp của các thành viên dữ liệu tĩnh
- 21. Hive - tách dữ liệu trên các tệp
- 22. Thuật toán để tìm hình ảnh tương tự trực quan từ cơ sở dữ liệu?
- 23. dữ liệu Vẽ đúng thời hạn (ngày) trục trong matlab
- 24. Làm cách nào để trực quan hóa dữ liệu âm thanh?
- 25. CARET. Mối quan hệ giữa tách dữ liệu và đào tạoKiểm soát
- 26. Trực quan hóa dữ liệu và phân tích dữ liệu bằng cách sử dụng thư viện webGL?
- 27. Bạn có thể trực quan hóa các khung dữ liệu theo cách tốt như thế nào?
- 28. Cách đơn giản để tách nguồn dữ liệu UITableview và ủy nhiệm khỏi lớp UIViewController chính?
- 29. Thành phần Android hướng dẫn/hướng dẫn trực quan
- 30. Khi nào để tách chế độ xem MVC thành hai?
+1 .... khá! – Jacob
@Amro - chỉ là tôi, hoặc ảnh chụp màn hình thứ hai bị thiếu? – Shai
@Shai: không chỉ bạn, đôi khi hình ảnh cũ được tải lên hình ảnh có xu hướng biến mất vì một số lý do ... Dù sao tôi đã cập nhật ví dụ với hình ảnh mới :) – Amro