Weka -- 数据格式基本介绍

2024-05-24 01:48

本文主要是介绍Weka -- 数据格式基本介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Weka是什么不多介绍,直接切入正题,简单介绍Weka的数据格式。

Weka存储数据的格式是ARFF(Attribute-Relation File Format)文件,是一种ASCII文本文件。如下例,weka自带的weather.arff文件。

% ARFF file for the weather data with some numric features 

@relation weather 

@attribute outlook {sunny, overcast, rainy} 
@attribute temperature real 
@attribute humidity real 
@attribute windy {TRUE, FALSE} 
@attribute play {yes, no} 

@data 

% 4 instances 

sunny,85,85,FALSE,no 
sunny,80,90,TRUE,no 
overcast,83,86,FALSE,yes 
rainy,70,96,FALSE,yes 


weka数据以“%”开始的行是注释,WEKA将忽略这些行。 
除去注释后,整个ARFF文件可以分为两个部分。

第一部分给出了头信息(Head information),包括了对关系的声明和对属性的声明。

第二部分给出了数据信息(Data information),即数据集中给出的数据。从“@data”标记开始,后面的就是数据信息了。 

关系声明 
关系名称在ARFF文件的第一个有效行来定义,格式为 
@relation <relation-name> 
<relation-name>是一个字符串。如果这个字符串包含空格,它必须加上引号(指英文标点的单引号或双引号)。 

属性声明 
属性声明用一列以“@attribute”开头的语句表示。数据集中的每一个属性都有它对应的“@attribute”语句,来定义它的属性名称和数据类型。 
声明语句的顺序很重要:它表明了该项属性在数据部分的位置;最后一个声明的属性被称作class属性,在分类或回归任务中,它是默认的目标变量。 
属性声明的格式为 
@attribute <attribute-name> <datatype> 
其中<attribute-name>是必须以字母开头的字符串。和关系名称一样,如果这个字符串包含空格,它必须加上引号。 

weka支持的<datatype>有四种,分别是 
numeric                                    数值型 
<nominal-specification>         分类(nominal)型 
string                                        字符串型 
date [<date-format>]              日期和时间型 
注意“integer”,“real”,“numeric”,“date”,“string”这些关键字是区分大小写的,而“relation”“attribute ”和“date”则不区分。

数值属性 
数值型属性可以是整数或者实数,但weka把它们都当作实数看待。 

分类属性 
分类属性由<nominal-specification>列出一系列可能的类别名称并放在花括号中:{<nominal-name1>, <nominal-name2>, <nominal-name3>, ...} 。数据集中该属性的值只能是其中一种类别。 
例如如下的属性声明说明“outlook”属性有三种类别:“sunny”,“ overcast”和“rainy”。而数据集中每个实例对应的“outlook”值必是这三者之一。 
@attribute outlook {sunny, overcast, rainy} 
如果类别名称带有空格,仍需要将之放入引号中。 

字符串属性 
字符串属性中可以包含任意的文本。这种类型的属性在文本挖掘中非常有用。 
示例: 
@ATTRIBUTE LCC string 

日期和时间属性 
日期和时间属性统一用“date”类型表示,它的格式是 
@attribute <name> date [<date-format>] 
其中<name>是这个属性的名称,<date-format>是一个字符串,来规定该怎样解析和显示日期或时间的格式,默认的字符串是ISO-8601所给的日期时间组合格式“yyyy-MM-ddTHH:mm:ss”。 
数据信息部分表达日期的字符串必须符合声明中规定的格式要求。

数据信息 
数据信息中“@data”标记独占一行,剩下的是各个实例的数据。 
每个实例占一行。实例的各属性值用逗号“,”隔开。如果某个属性的值是缺失值(missing value),用问号“?”表示,且这个问号不能省略。例如: 
@data 
sunny,85,85,FALSE,no 
?,78,90,?,yes 

字符串属性和分类属性的值是区分大小写的。若值中含有空格,必须被引号括起来。例如: 
@relation LCCvsLCSH 
    @attribute LCC string 
    @attribute LCSH string 
    @data 
    AG5, 'Encyclopedias and dictionaries.;Twentieth century.' 
    AS262, 'Science -- Soviet Union -- History.' 

日期属性的值必须与属性声明中给定的相一致。例如: 
@RELATION Timestamps 
    @ATTRIBUTE timestamp DATE "yyyy-MM-dd HH:mm:ss" 
    @DATA 
    "2001-04-03 12:12:12" 
    "2001-05-03 12:59:55" 

稀疏数据 
有的时候数据集中含有大量的0值(比如购物篮分析),这个时候用稀疏格式的数据存贮更加省空间。 
稀疏格式是针对数据信息中某个实例的表示而言,不需要修改ARFF文件的其它部分。看如下的数据: 
@data 
    0, X, 0, Y, "class A" 
    0, 0, W, 0, "class B" 
用稀疏格式表达的话就是 
@data 
    {1 X, 3 Y, 4 "class A"} 
    {2 W, 4 "class B"} 
每个实例用花括号括起来。实例中每一个非0的属性值用<index> <空格> <value>表示。<index>是属性的序号,从0开始计;<value>是属性值。属性值之间仍用逗号隔开。 
注意在稀疏格式中没有注明的属性值不是缺失值,而是0值。若要表示缺失值必须显式的用问号表示出来。 

这篇关于Weka -- 数据格式基本介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/997028

相关文章

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

MySQL中慢SQL优化的不同方式介绍

《MySQL中慢SQL优化的不同方式介绍》慢SQL的优化,主要从两个方面考虑,SQL语句本身的优化,以及数据库设计的优化,下面小编就来给大家介绍一下有哪些方式可以优化慢SQL吧... 目录避免不必要的列分页优化索引优化JOIN 的优化排序优化UNION 优化慢 SQL 的优化,主要从两个方面考虑,SQL 语

SpringBoot整合MybatisPlus的基本应用指南

《SpringBoot整合MybatisPlus的基本应用指南》MyBatis-Plus,简称MP,是一个MyBatis的增强工具,在MyBatis的基础上只做增强不做改变,下面小编就来和大家介绍一下... 目录一、MyBATisPlus简介二、SpringBoot整合MybatisPlus1、创建数据库和

C++中函数模板与类模板的简单使用及区别介绍

《C++中函数模板与类模板的简单使用及区别介绍》这篇文章介绍了C++中的模板机制,包括函数模板和类模板的概念、语法和实际应用,函数模板通过类型参数实现泛型操作,而类模板允许创建可处理多种数据类型的类,... 目录一、函数模板定义语法真实示例二、类模板三、关键区别四、注意事项 ‌在C++中,模板是实现泛型编程

Python实现html转png的完美方案介绍

《Python实现html转png的完美方案介绍》这篇文章主要为大家详细介绍了如何使用Python实现html转png功能,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 1.增强稳定性与错误处理建议使用三层异常捕获结构:try: with sync_playwright(

Java使用多线程处理未知任务数的方案介绍

《Java使用多线程处理未知任务数的方案介绍》这篇文章主要为大家详细介绍了Java如何使用多线程实现处理未知任务数,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 知道任务个数,你可以定义好线程数规则,生成线程数去跑代码说明:1.虚拟线程池:使用 Executors.newVir

JAVA SE包装类和泛型详细介绍及说明方法

《JAVASE包装类和泛型详细介绍及说明方法》:本文主要介绍JAVASE包装类和泛型的相关资料,包括基本数据类型与包装类的对应关系,以及装箱和拆箱的概念,并重点讲解了自动装箱和自动拆箱的机制,文... 目录1. 包装类1.1 基本数据类型和对应的包装类1.2 装箱和拆箱1.3 自动装箱和自动拆箱2. 泛型2

Python中多线程和多进程的基本用法详解

《Python中多线程和多进程的基本用法详解》这篇文章介绍了Python中多线程和多进程的相关知识,包括并发编程的优势,多线程和多进程的概念、适用场景、示例代码,线程池和进程池的使用,以及如何选择合适... 目录引言一、并发编程的主要优势二、python的多线程(Threading)1. 什么是多线程?2.

MyBatis-Flex BaseMapper的接口基本用法小结

《MyBatis-FlexBaseMapper的接口基本用法小结》本文主要介绍了MyBatis-FlexBaseMapper的接口基本用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具... 目录MyBATis-Flex简单介绍特性基础方法INSERT① insert② insertSelec

JAVA调用Deepseek的api完成基本对话简单代码示例

《JAVA调用Deepseek的api完成基本对话简单代码示例》:本文主要介绍JAVA调用Deepseek的api完成基本对话的相关资料,文中详细讲解了如何获取DeepSeekAPI密钥、添加H... 获取API密钥首先,从DeepSeek平台获取API密钥,用于身份验证。添加HTTP客户端依赖使用Jav