天真的分类MATLAB(naive classifier matlab)

2019-09-19 18:39发布

当测试在MATLAB中天真的分类,我得到不同的结果,即使我训练,对同一样品测试数据,我在想,如果我的代码是正确的,如果有人可以帮助解释这是为什么?

%% dimensionality reduction 
columns = 6
[U,S,V]=svds(fulldata,columns);

%% randomly select dataset
rows = 1000;
columns = 6;

%# pick random rows
indX = randperm( size(fulldata,1) );
indX = indX(1:rows)';

%# pick random columns
%indY = randperm( size(fulldata,2) );
indY = indY(1:columns);

%# filter data
data = U(indX,indY);

%% apply normalization method to every cell
data = zscore(data);

%create a training set the same as datasample
training_data = data;

%match the class labels to the corresponding rows
target_class = classlabels(indX,:)

%classify the same data sample to check if naive bayes works
class  = classify(data, training_data, target_class, 'diaglinear')
confusionmat(test_class, class)

下面是一个例子:

请注意,它得到了IPSweep进行,一滴泪水,背混了正常交通。 我还没有得到到看不见的数据进行分类的阶段,但我只是想测试它是否会同样的数据进行分类。

混淆矩阵输出:

ans =

   537     0     0     0     0     0     0     1     0
     0   224     0     0     0     1     0     1     0
     0     0    91    79     0    17    24     4     0
     0     0     0     8     0     0     2     0     0
     0     0     0     0     3     0     0     0     0
     0     0     0     0     0     1     0     0     0
     0     0     0     0     0     0     2     0     0
     0     0     0     0     0     0     0     3     0
     0     0     0     0     0     1     0     0     1

虽然我不知道这是什么其实是我可能得到这个错误在我的代码,但我想我只是测试,看看它输出。

Answer 1:

您正在使用降维后的数据分类。 一个分类,就是要稍微不精确的,因为它需要一概而论。 在降维阶段,你正在失去这也导致降低分类的性能信息。

不要指望甚至在训练集完美的表现,这将是过度拟合不好的情况下。

至于使用的混淆矩阵。 C(3,4)=79意味着什么比这更对79个数据点的类应该是3而他们得到了归类为4级。完整的矩阵说,你的分类非常适用于1和2类,但有3类问题各个班级的其余部分几乎没有任何数据,因此很难判断分类有多好,为他们工作。



文章来源: naive classifier matlab