Weka – 分类,weka分类


1.      weka简介

1)  weka是新西兰怀卡托大学WEKA小组用JAVA开发的机器学习/数据挖掘开源软件。

2)  相关资源链接

         http://sourceforge.net/projects/weka/files/

         http://www.cs.waikato.ac.nz/ml/weka/

3)  主要特点

  • 集数据预处理、学习算法(分类、回归、聚类、关联分析)和评估方法等为一体的综合性数据挖掘工具
  • 具有交互式可视化界面
  • 提供算法学习比较环境
  • 通过其接口,可实现自己的数据挖掘算法

2.      数据集(.arff文件)


数据集的呈现形式如上图所示,其表现为一个二维表,其中:

  • 表格里一行称作一个实例(Instance),相当于统计学中的一个样本,或者数据库中的一条记录
  • 表格里一列称作一个属性(Attribute),相当于统计学中的一个变量,或者数据库中的一个字段

数据集的存储格式如上图所示,是一种ASCII文本文件,整个ARFF文件可以分为两个部分:

  • 第一部分给出了头信息(Headinformation),包括了对关系的声明和对属性的声明
  • 第二部分给出了数据信息(Datainformation),即数据集中给出的数据。从”@data”标记开始,后面即为数据信息

注:其中注释部分以”%”开始,注释部分weka将忽略这些行;

如果关系名,属性名,数据的字符串包含空格,它必须加上引号;

最后一个声明的属性被称作class属性,在分类或回归任务中它是默认的目标变量。

3.      数据类型

1)Weka支持四种数据类型,分别为:

  •  numeric 数值型

              数值型可以是整数(integer)或者实数(real),weka将它们都当作实数看待。

  • nominal 标称型

             标称属性由一系列的类别名称放在花括号中。

  • string 字符串型

             字符串属性可以包含任意的文本。

  • date日期和时间型

             日期和时间属性统一用”date”类型表示,默认的字符串是ISO-8601所给的日期时间组合格式:“yyyy-MM-dd HH:mm:ss”

            eg.  @ATTRIBUTE timestamp DATE“yyyy-MM-dd HH:mm:ss”

            @DATA   “2015-06-23 20:05:40”

2)稀疏数据

当数据集中含有大量的0值时,用稀疏格式的数据存储更加省空间。稀疏格式是针对数据信息中某个对象的表示而言,不需要修改ARFF文件的其它部分。例如:

@data                           @data

0, X, 0, Y,“class A”                  {1 X, 3 Y, 4“class A”}

0, 0, W, 0,“class B”                 {2 W, 4 “classB”}

4.      数据准备

.xls -> .csv -> .arff

5.      分类 Classify

1)  分类过程

根据一个WEKA实例的一组特征属性(输入变量),对目标属性进行分类预测。为了实现这一目的,我们需要有一个训练数据集,这个数据集中每个实例的输入和输出都是已知的。观察训练集中的实例,可以建立预测的分类/回归模型。有了这个模型,就可以对新的未知实例进行分类预测。衡量模型的好坏主要在于预测的准确程度。

2)  数据预测的例子

a.      注意测试数据集和训练数据集的各个属性声明部分的设置必须是一致的。即使在测试数据集中没有class属性的值,也需要添加这个属性,可以将该属性在各个实例上的值均设置为缺失值。

b.      打开“Simple CLI”模块,使用“J48”算法的命令格式为:

java weka.classifiers.trees.J48 -C0.25 -M 2 -t "C:\\Users\\Administrator\\Desktop\\课题\\数据文件\\测试数据\\2.3参考文献--相关性分析+数据变换.csv.arff"-d"C:\\Users\\Administrator\\Desktop\\课题\\数据文件\\测试数据\\2.3参考文献--相关性分析+数据变换.model"

这里的” 2.3参考文献--相关性分析+数据变换.csv.arff”是训练数据集。其中参数-C 0.25表示置信因子,-M 2表示最小实例数。-t后面为训练数据集的完整路径,-d后面为保存模型的完整路径。

c.      把这个模型应用到测试数据集的命令格式为:

java weka.classifiers.trees.J48 -p 11 -l"C:\\Users\\Administrator\\Desktop\\课题\\数据文件\\测试数据\\2.3参考文献--相关性分析+数据变换.model"-T "C:\\Users\\Administrator\\Desktop\\课题\\数据文件\\测试数据\\3.3学位论文中提取的参考文献.csv.arff"

其中-p 11指模型中的待预测属性的真实值存在第11个属性中,-l后面为模型的完整路径,-T后面为测试数据集的完整路径。

d.      输入上述命令后,出现的结果:

===Predictions on test data ===

inst#     actual predicted error prediction ()

     1       1:?        1:J       1

     2       1:?        1:J       1

     3       1:?        2:M       0.667

     4       1:?        2:M       0.667

     5       1:?        3:C       1

     6        1:?        2:M       0.667

 第一列为实例编号,第二列为测试数据集中原来class属性的值,第三列是预测后的结果,第四列为预测结果的置信度,例如对于实例1,有百分之百的把握说它的值为J.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关内容