weka数据挖掘(一)

这周一位老师叫我研究数据挖掘,包括算法的研究和weka数据挖掘平台的研究,算法的研究到后面再写,目前研究了wek这个数据挖掘平台,很强大,故写一博文,还有一些自己不懂的问题,求大牛指教。

简单的介绍和安装就免了,直接给干货吧。

打开weka-> exproler ,默认就到preprocess预处理界面,如果有了自己的数据就可以直接Open file,weka支持的格式是arff格式,怎么转换也免了,网上大把资料,咱们要干货,我这里就介绍从数据库里面的数据源吧。

我以mysql为例子,open Db,打开weka的SQL -Viewer界面;因为要数据源,我们在mysql下面给一些数据吧

weka数据挖掘(一)_第1张图片

我在mysql下面建立一个test的数据库,再在里面建一个new的表,表示新闻的数据,里面建立一些新闻内容、作者、是否是好新闻、评价等等的属性。

接着,在URL地址上写上地址:jdbc:mysql://localhost:3306/test,点击user,输入账号密码,再点击connect。

会报会报这个错误:exception:java.sql.SQLException: No suitable driver found for jdbc:mysql://localhost:3306/test,原因是没有jdbc.mysql的驱动,weka的默认驱动不支持mysql,下面看看解决方法。

一:下载驱动包>mysql-connector-java-5.1.15-bin.jar
二:设置环境变量,在path中添加一个WEKA_HOME:C:/Program Files/Weka-3-6,在CLASSPATH中添加%WEKA_HOME%/lib/mysql-connector-java-5.1.15-bin.jar;
三:进入%WEKA_HOME%/weka/weka/experiment找到DatabaseUtils.props这个文件,修改如下的地方,

将String,getString()=0 到text ,getString()前面的#去掉,这样就改为weka支持的数据格式了,因为修改了weka.jar包,所以重新打包这个jar包,用jar cvf weka.jar *.*可以重新打包这个jar包,然后把打包好的jar包替换weka根目录下之前的jar包。再连接一次数据库,会发现连接上了。
weka数据挖掘(一)_第2张图片将右图内容前面的#号去掉,改为weka支持的属性类型。将右图内容前面的#号去掉,改为weka支持的属性类型。接着,写query查询语句,我们这里比较简单,就把所有的记录查询处理,如图,点击OK,就可以把数据源添加到了weka了。

weka数据挖掘(一)_第3张图片

但是这里还有一个问题,weka的默认字符集编码是Cp1252,所以如果你导入的数据中有中文字符,就会出现乱码的情况。可以这解决,找到weka的RunWeka.ini文件,将cp1252替换成你的数据对应的字符集编码,比如utf-8,cp936(简体中文),这样就好了。

接下来,我们要讲讲数据进行预处理的重要性了,现实世界中数据大体上都是不完整,不一致的脏数据,无法直接进行数据挖掘,或挖掘结果差强人意,不要随意找一份数据就开始所谓的数据挖掘探索,对于一些不正常的数据或者可疑的数据请和相关人员反复谈论,这句话是我从别人那里搞来的,哈。

weka.filters中包含一些数据预处理的简单实现(其实已经够用了),主要分成两大类,监督过滤(SupervisedFilter)和非监督过滤(UnsupervisedFilter),事实上,Filter针对特征(attribute)和样本(instance)提供了大量的操作方法,功能十分强大。点击Filter的Choose就可以选择,这里我不想介绍具体的filter的用处,看API吧。
我们把weka的里面的无用数据删了,再进行预处理,点击Apply就可以处理了。

之后classfy,我们选决策树里面的J48分类器,里面的算法是用C4.5算法,这个算法是在ID3算法的基础之上改进的,然后选择是否是好新闻来决策,右击生成的数,用Tree visualizer来直观观察。
weka数据挖掘(一)_第4张图片

我这个是一个很简单的例子,评价好坏的标准也没有细化到新闻内容,要能对正文进行分词,还在研究当中,查了一下,好像可以用其他的词库,例如搜狗的,也可以用IKAnalyzer来分析,这个是java的一个词库,怎么做呢,还得再研究咯,有大神指点吗?

你可能感兴趣的:(数据挖掘,分类,分词,预处理,weka)