weka特征预处理的一些tip

标签: weka 特征 tip | 发表时间:2012-04-24 16:09 | 作者:changedi
出处:http://www.blogjava.net/
首先,提供两个地址,这里包含了全部的内容原文:
http://weka.wikispaces.com/Text+categorization+with+Weka
http://weka.wikispaces.com/ARFF+files+from+Text+Collections

weka可以以目录形式读入数据
然后再简单说一下weka在做文本特征内容处理时候需要注意的东西:
声明一点,在weka的gui下是没法使用这个功能的:以目录形式读入数据。
首先,把要处理的数据写入到这样的目录结构下:
...
|
+- text_example
|
+- class1
|  |
|  + file1.txt
|  |
|  + file2.txt
|  |
|  ...
|
+- class2
|  |
|  + another_file1.txt
|  |
|  + another_file2.txt
|  |
|  ...

然后在源码包下,命令行执行 java weka.core.converters.TextDirectoryLoader -dir text_example > text_example.arff
其中text_example就是数据所在的目录,而后面的arff文件就是生成的arff文件。另外值得补充的一点是在获得这样的arff后哦,文本内容是作为一个字符串特征存在的,也就是说生成的arff就是一个特征项加一个类标签,其中的类标就是text_example目录下级classX子目录的名字。为了更方便使用,weka提供了一个有监督的属性过滤器,帮助分词(这里指英文的split) ——StringToWordVector,这个是可以做TF/IDF的~~~
下面的简单代码可以完成一个分类:
 1 import weka.core.*;
 2 import weka.core.converters.*;
 3 import weka.classifiers.trees.*;
 4 import weka.filters.*;
 5 import weka.filters.unsupervised.attribute.*;
 6
 7 import java.io.*;
 8
 9 /** *//**
10  * Example class that converts HTML files stored in a directory structure into 
11  * and ARFF file using the TextDirectoryLoader converter. It then applies the
12  * StringToWordVector to the data and feeds a J48 classifier with it.
13  *
14  * @author FracPete (fracpete at waikato dot ac dot nz)
15  */
16 public class TextCategorizationTest  {
17
18   /** *//**
19    * Expects the first parameter to point to the directory with the text files.
20    * In that directory, each sub-directory represents a class and the text
21    * files in these sub-directories will be labeled as such.
22    *
23    * @param args        the commandline arguments
24    * @throws Exception  if something goes wrong
25    */
26   public static void main(String[] args) throws Exception  {
27     // convert the directory into a dataset
28     TextDirectoryLoader loader = new TextDirectoryLoader();
29     loader.setDirectory(new File("./text_example"));
30     Instances dataRaw = loader.getDataSet();
31     System.out.println("\n\nImported data:\n\n" + dataRaw.numClasses());
32
33     // apply the StringToWordVector
34     // (see the source code of setOptions(String[]) method of the filter
35     // if you want to know which command-line option corresponds to which
36     // bean property)
37     StringToWordVector filter = new StringToWordVector();
38     filter.setInputFormat(dataRaw);
39     Instances dataFiltered = Filter.useFilter(dataRaw, filter);
40     System.out.println("\n\nFiltered data:\n\n" + dataFiltered);
41
42     // train J48 and output model
43     J48 classifier = new J48();
44     classifier.buildClassifier(dataFiltered);
45     System.out.println("\n\nClassifier model:\n\n" + classifier);
46   }
47 }
48

最后,我还是建议数据建模和生成都自己写程序,数据准备往往自己的程序才能准确的控制,weka最多是帮我们做一下selection和classification。
另外补充一点,很多朋友问到了如何做文本分类,好吧,如果大家懒得去读paper的话,首先我普及一点,不管什么分类,分类器基本是可以通用的,注意是基本。关键是模型的构建和特征的生成。至于文本分类中用到的特征,TF*IDF还有其他如互信息,卡方统计,期望交叉熵等等,公式摆在那里,计算真的不难。因为就我接触过的分类问题,文本分类的特征计算应该是很容易的了。



changedi 2012-04-24 16:09 发表评论

相关 [weka 特征 tip] 推荐:

weka特征预处理的一些tip

- - BlogJava-首页技术区
首先,提供两个地址,这里包含了全部的内容原文:. weka可以以目录形式读入数据. 然后再简单说一下weka在做文本特征内容处理时候需要注意的东西:. 声明一点,在weka的gui下是没法使用这个功能的:以目录形式读入数据. 首先,把要处理的数据写入到这样的目录结构下:. 然后在源码包下,命令行执行 java weka.core.converters.TextDirectoryLoader -dir text_example > text_example.arff.

WEKA学习总结

- - CSDN博客互联网推荐文章
1.      Weka处理的数据表格中,一个横行称为一个实例(Instance),竖行代表一个属性(Arrtibute),数据表格称为一个数据集,在weka看来,呈现了属性之间的一种关系(Relation). 2.      Weka存储数据的格式是ARFF(Attribute-RelationFile Format)文件,这是一种ASCII文本文件.

使用Weka进行数据挖掘

- - 搜索研发部官方博客
数据挖掘、机器学习这些字眼,在一些人看来,是门槛很高的东西. 诚然,如果做算法实现甚至算法优化,确实需要很多背景知识. 但事实是,绝大多数数据挖掘工程师,不需要去做算法层面的东西. 他们的精力,集中在特征提取,算法选择和参数调优上. 那么,一个可以方便地提供这些功能的工具,便是十分必要的了. 而weka,便是数据挖掘工具中的佼佼者.

[转] 有关weka数据格式

- - 非技术 - ITeye博客
摘自:http://www.cnblogs.com/xiaoka/archive/2012/03/22/2412421.html. Weka简介 (http://www.china-pub.com/computers/common/info.asp?id=29304).       WEKA的全名是怀卡托智能分析环境(Walkato Environment for Knowledge Analysis),WEKA的开发者来自新西兰,而新西兰有一种鸟名字叫做weka,便是weka图标上的那只.

Tip中小三角的实现

- 溪梦 - WEB前端开发
前段时间专门研究了一下腾讯微博的Tip,很有意思. tip中的小箭头是用“◆”(encode为:◆)字符模拟的. 以前也写过类似的实现方案《用css的border属性实现三角》. 用“◆”字符模拟小三角有一个有点就是:比如tip有border时,也可以用两个绝对定位的“◆”字符模拟. 如图: 注意:最好根据您的实际情况设置“◆”的字体,我这里用了宋体,有棱有角真好.

HBase的一些应用设计tip

- - BlogJava_首页
1,对于HBase的存储设计,要考虑它的存储结构是:rowkey+columnFamily:columnQualifier+timestamp(version)+value = KeyValue in HBase,一个KeyValue依次按照rowkey,columnkey和timestamp有序.

玩mysql必须知道的10个tip

- - SQL - 编程语言 - ITeye博客
比如我的mysql是用源码方式安装在/usr/local/mysql. 自动:将/usr/local/mysql/share/mysql/mysql.server拷贝到/etc/rc.d/init.d/下,然后. chkconfig --add mysql.server就可以开机就启动mysql服务了.

数据挖掘开源软件:WEKA基础操作

- - CSDN博客互联网推荐文章
数据挖掘开源软件:WEKA基础教程. 本文档部分来自于网络,随着自己的深入学习,讲不断的修订和完善. 第一节   Weka简介:. Weka是由新西兰怀卡托大学开发的智能分析系统(Waikato Environment for Knowledge Analysis) . 以外的地方,Weka通常按谐音念成Mecca,是一种现今仅存活于新西兰岛的,健壮的棕色鸟,  非常害羞,好奇心很强,但不会飞 .

Weka聚类算法的两个实现算法

- - 行业应用 - ITeye博客
在这里将使用Weka自带的K-means以及EM算法对同一份数据进行聚类. 目前使用的是自带的数据集. 我也不太清楚这样聚类的效果如何 sigh.... K-Means K-均值算法. // 目前没有使用到,但是在3.7.10的版本之中可以指定距离算法. // 初始化聚类器 (加载算法). 在上面的算法之中,使用的是SimpleKMeans这个类.

[转][转]机器学习工具:scikit-learn/Weka

- - heiyeluren的blog(黑夜路人的开源世界)
开源机器学习工具scikit-learn入门. Scikit-Learn是基于python的机器学习模块,基于BSD开源许可证. 这个项目最早由DavidCournapeau 在2007 年发起的,目前也是由社区自愿者进行维护. Scikit-Learn的官方网站是 http://scikit-learn.org/stable/,在上面可以找到相关的Scikit-Learn的资源,模块下载,文档,例程等等.