weka介绍

参见

1)百度百科:http://baike.baidu.com/link?url=V9GKiFxiAoFkaUvPULJ7gK_xoEDnSfUNR1woed0YTmo20Wjo0wYo7uff4mq_wg3WzKhTZx4Ok0JFgtiYY19U4q

2)weka官网: http://www.cs.waikato.ac.nz/ml/weka/

简单文本分类实现:

此处文本为已处理好的文本向量空间模型,关于文本特征提取主要是基于TF-IDF算法对已分词文档进行特征抽取,然后基于已提取特征将所有文档表示为向量空间模型。

偷个小懒,就用weka自带的*.arff格式文档来做实现。

weka对于文本分类提供两种方式,一种是批量式文本分类,即将所有数据一次性放入内存进行分类处理,这种情况对内存有所要求;为适应大量数据的分类实现,另一种增量式

文本分类,允许分批次导入数据至内存进行分类,这样就避免了因数据集过大而内存不足的问题。具体实现如下:

1)采用增量式朴素贝叶斯算法进行分类

注:weka中所有增量式分类器都实现了UpdateableClassifier接口,该接口位于weka.classifiers包中。

 1 /**
 2      * train a classifier using trainSet,then evaluate the classifier on testSet
 3      * 分类分为两种:增量、批量
 4      * 此处为增量式分类:适用于训练集太大而内存有限的情况
 5      * 加载数据集(训练集or测试集),使用ArffLoader
 6      * @param trainSet:训练集路径
 7      * @param testSet:测试集路径
 8      * @return classifier
 9      *
10      */
11     private Classifier trainClassifierIncremental(String trainSet,String testSet){
12         ArffLoader loader=new ArffLoader();
13         Instances instances = null;
14         NaiveBayesUpdateable naiveBayesUpdateable=null;
15         try {
16             //load data
17             loader.setFile(new File(trainSet));
18             instances=loader.getStructure();
19     //        instances.setClassIndex(classIndex);  // 指定分类属性索引
20             instances.setClassIndex(instances.numAttributes()-1); //默认最后一个属性为分类属性
21             
22             // train NaiveBayes :incremental classifier
23             naiveBayesUpdateable=new NaiveBayesUpdateable();
24             naiveBayesUpdateable.buildClassifier(instances);
25             Instance current;
26             while((current=loader.getNextInstance(instances))!=null){
27                 naiveBayesUpdateable.updateClassifier(current);
28             }
29             
30             //evaluate classifier
31             Instances testInstances=new Instances(new FileReader(testSet));
32             testInstances.setClassIndex(testInstances.numAttributes()-1);
33             Evaluation eval=new Evaluation(instances);
34             eval.evaluateModel(naiveBayesUpdateable, testInstances);
35             System.out.println(eval.toMatrixString());
36             System.out.println(eval.toSummaryString());
37             System.out.println(eval.toClassDetailsString());
38             
39         } catch (Exception e) {
40             e.printStackTrace();
41         }
42         return naiveBayesUpdateable;
43     }
增量式分类实现

相关文章:

  • 2021-04-16
  • 2022-12-23
  • 2022-12-23
  • 2021-05-27
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-07-31
  • 2021-12-05
  • 2021-10-07
  • 2021-11-20
  • 2021-09-15
相关资源
相似解决方案