WEKA学习笔记2

昨天老大布置任务后,我浏览了WEKA的Home Page,文档和WIKI等,当时想慢慢踏实的整理资料和文档,于是边看边翻译WekaManual.pdf,今天中午老大来检查任务时,表示我进度太慢,他需要我在这个周结束前能跑起一个简单的例子来验证方案是否可行。于是我就尝试的实际操作了一把,兴奋的想可以体验下数据挖掘的感觉(现在没感觉,我都看不懂结果)。

先是获取数据,我们用的是SOLR,按照我设定的实验计划,用SHELL从SOLR中检索出必要的数据,然后参照WEKA的ARFF格式输出文本。

这里提下,ARFF文本的产生方法,有很多转化方法,很方便,但是我没弄懂,没弄懂ARFF格式中每条记录与转换前的目录层次的关系。幸好我可以很容易的仿照ARFF格式直接输出文本,不然估计我今天就卡在这了。如果有懂的人,希望能跟我联系,教教我,我很笨,教的时候要有耐心。多多包涵。

成功获得了ARFF后,就导入到WEKA中,具体操作就不提了。

这时出现了问题:提前读到EOL,并提示了行号,对应到文本,发现是上一行的文本含有ARFF中的非法或保留字符,比如%,在ARFF中表示注释。

我遇到的情况有 ‘%’,‘空格’,‘英文的””‘。

直接全局替换。遂导入成功。

刚才忘了说,我的文本是中文,基本所有的instances都是中文,所以我在定义ARFF时,所有的ATTRIBUTES都定义为STRING类型。

数据虽然成功的导入,但中文都是乱码,不过问题很好解决,也很容易搜索到答案,这是因为JAVA在WINDOWS下默认是CP1252字符集,而JAVA是支持UTF-8的,所以把JAVA设置为启动时使用UTF-8格式的字符集就可以了,具体方法为,修改WEKA安装目录下的RunWeka.init,将fileEncoding的值修改为UTF-8即可。

只有两个ATTRIBUTE,而且数据的准确性也有保障(以前通过人工归纳的方法总结过数据),以我的理解就不需要费时的进行filter了,于是想直接进行classify,老大说使用决策树(我不知道决策树是什么,那本书我还没看呢,我昨天才刚接触数据挖掘)不过答案是不可以。

因为我的ATTRIBUTES是STRING格式的,而很多决策树都不支持String,这时候我想filter是对数据的预处理,应该会包含我需要的处理方法,这里就是将string处理成其他可以被决策树使用的格式。

这个还真的有(长松一口气),unsupervised- attribute-StringToNominal 就是它了。

果断APPLY,一会就完成了,有点出乎我的意料,20W+的数据,当然我没什么经验,纯粹是感觉。

然后有一种决策树可以支持,果断跑之。

然后到现在那个小鸟还在乐此不疲的单腿左右摇摆,不过从可视化里还是能看到很多信息,初步分析应该是很可行的,数据的分布等等与预期的差不多,应该不会被切,可以继续深入学习,经过这两天的学习我对WEKA产生了浓厚的兴趣,当然现在还刚刚开始,连门槛还没跨进来。

关于数据忘了一点,文本中不能有,号,貌似只有英文的有影响,等我试试,因为,是ARFF格式中的分割符。

确实是只有英文的,不能出现在文本中,中文的,可以。

你可能感兴趣的:(WEKA学习笔记2)