用朴素贝叶斯在MATLAB中实现文本分类

时间:2014-12-19 09:08:15

标签: matlab classification text-classification

我想在MATLAB中使用Naive Bayes算法实现文本分类。 我现在有3个矩阵:

  1. 班级先验(8 * 2格 - 8个班级名称,每个班级,其中%来自培训)
  2. 训练数据:字数矩阵 - (每个类15000 * 9个单元格,计算每个特征(单词)。最后一列是所有文档的每个字数。
  3. 测试数据:具有(2000 * 1)单元格的矩阵 - 并且对于每个单元格,表示文档的单词列表。
  4. 我现在该怎么办?我想计算测试集的召回率和精度。我看了一下matlab天真的贝叶斯函数,它假设很简单,但我不知道如何以及从哪里开始。

    谢谢

1 个答案:

答案 0 :(得分:3)

以下是朴素贝叶斯分类的一个例子,

x1 = 5 * rand(100,1);
y1 = 5 * rand(100,1);
data1 = [x1,y1];
x2 = -5 * rand(100,1);
y2 =  5 * rand(100,1);
data2 = [x2,y2];
x3 = -5 * rand(100,1);
y3 = -5 * rand(100,1);
data3 = [x3,y3];
traindata = [data1(1:50,:);data2(1:50,:);data3(1:50,:)];
testdata = [data1(51:100,:);data2(51:100,:);data3(51:100,:)];
label = [repmat('x+y+',50,1);repmat('x-y+',50,1);repmat('x-y-',50,1)];

这是我的数据,三个班级。现在分类,

nb = NaiveBayes.fit(traindata, label);
ClassifierOut = predict(nb,testdata);

我认为您应该将数据更改为矩阵而不是单元格,但标签是okey。

以下是结果,blue是训练数据,其余是三个类的分类器输出。

enter image description here

您还可以查看here来计算多类数据的调用和精度。