2012-07-01 15 views
5

Làm cách nào để phân loại một hàng các ô riêng biệt trong MATLAB?Phân loại hàng Naive Bayes

Tại thời điểm này tôi có thể phân loại coloums duy nhất như vậy:

training = [1;0;-1;-2;4;0;1]; % this is the sample data. 
target_class = ['posi';'zero';'negi';'negi';'posi';'zero';'posi']; 
% 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(25, 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 

Không giống như ở trên, tôi muốn phân loại:

 A B C 
Row A | 1 | 1 | 1 = a house 

Row B | 1 | 2 | 1 = a garden 

Dưới đây là một ví dụ mã từ các trang web MATLAB:

nb = NaiveBayes.fit(training, class) 
nb = NaiveBayes.fit(..., 'param1', val1, 'param2', val2, ...) 

Tôi không hiểu những gì param1, val1, v.v. Có ai giúp được không?

Trả lời

3

Dưới đây là một ví dụ chuyển thể từ các tài liệu:

%# load data, and shuffle instances order 
load fisheriris 
ord = randperm(size(meas,1)); 
meas = meas(ord,:); 
species = species(ord); 

%# lets split into training/testing 
training = meas(1:100,:);   %# 100 rows, each 4 features 
testing = meas(101:150,:);  %# 50 rows 
train_class = species(1:100);  %# three possible classes 
test_class = species(101:150); 

%# train model 
nb = NaiveBayes.fit(training, train_class); 

%# prediction 
y = nb.predict(testing); 

%# confusion matrix 
confusionmat(test_class,y) 

đầu ra trong trường hợp này là 2 trường hợp phân loại sai:

ans = 
    15  0  1 
    0 20  0 
    1  0 13 

Bây giờ bạn có thể tùy chỉnh tất cả các loại tùy chọn cho phân loại (param/giá trị bạn đề cập đến), chỉ cần tham khảo documentation để biết mô tả của mỗi ..

Ví dụ: nó cho phép bạn chọn từ một gaussian hoặc không tham số phân phối hạt nhân để mô hình hóa các tính năng. Ngoài ra, bạn có thể chỉ định xác suất trước của các lớp, nếu nó được ước tính từ các trường hợp đào tạo hoặc bạn có giả định xác suất bằng nhau hay không.

+0

Hi amro test_class là gì trong trường hợp này? –

+1

@JungleBoogie: đó là các nhãn lớp thực sự của tập kiểm tra. Chúng tôi sử dụng nó để có được một thước đo không thiên vị về hiệu suất (chúng tôi đào tạo một mô hình trên một bộ, và thử nghiệm nó trên một bộ hoàn toàn khác) – Amro

+0

Ah tôi hiểu bây giờ. Tôi nhận được một vài lỗi tuy nhiên cố gắng sử dụng phương pháp của bạn nhưng tôi quản lý để sử dụng phương pháp riêng của tôi (không chắc chắn về sự khác biệt), bạn có thể thấy việc thực hiện [ở đây] (http://stackoverflow.com/questions/11566964/clustering-and -bay-classifier-matlab). –