如何在Weka中加载CSV机器学习数据
How To Load CSV Machine Learning Data in Weka
原文作者:Jason Brownlee
原文地址:https://machinelearningmastery.com/load-csv-machine-learning-data-weka/
译者微博:@从流域到海域
译者博客:blog.csdn.net/solo95
Weka的全名是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis),是一款免费的,非商业化(与之对应的是SPSS公司商业数据挖掘产品--Clementine )的,基于JAVA环境下开源的机器学习(machine learning)以及数据挖掘(data mining)软件。它和它的源代码可在其官方网站下载。有趣的是,该软件的缩写WEKA也是新西兰独有的一种鸟名,而Weka的主要开发者同时恰好来自新西兰的the University of Waikato(来自百度百科,译者注)。
如何在Weka中加载CSV机器学习数据
在开始建模之前,您必须能够加载(您的)数据。
在这篇文章中,您将了解如何在Weka中加载您的CSV数据集。阅读这篇文章后,你会知道:
- 关于ARFF文件格式以及它在Weka中表示数据的默认方式。
- 如何在Weka Explorer中加载CSV文件并将其保存为ARFF格式。
- 如何在ArffViewer工具中加载CSV文件并将其保存为ARFF格式。
本教程假定您已经安装了Weka。
让我们开始吧。
How To Load CSV Machine Learning Data in Weka
照片由Thales提供,保留某些权利。
如何在Weka中描述数据
机器学习算法主要被设计为与数组阵列一起工作。
这被称为表格化或结构化数据,因为数据在由行和列组成的电子表格中看起来就是这样。
Weka在描述数据时拥有特定的以计算机科学为中心的词汇表:
- 实例(Instance):一行数据被称为一个实例,就像在一个实例中或来自问题域中的观察(observation)一样。
- 属性(Attribute):一列数据被称为一个特征或属性,就像在观察的特征中那样。
每个属性可以有不同的类型,例如:
- 实数(Real)表示数值,如1.2。
- 整数(Integer)表示没有小数部分数的数值,如5。
- 标称(Nominal)表示分类数据,如“狗”和“猫”。
- 字符串(String)表示单词组成的列表,如同这个句子本身。
在分类问题上,输出变量必须是标称的。对于回归问题,输出变量必须是实数。
Weka中的数据
Weka倾向于以ARFF格式加载数据。
(WEKA存储数据的格式是ARFF(Attribute-Relation File Format)文件,这是一种ASCII文本文件。二维表格存储ARFF文件中。译者注)
ARFF是表示属性关系文件格式的首字母缩略词。它是使用标题的CSV文件格式的扩展,提供有关列中数据类型的元数据。
例如,CSV格式经典的鸢尾花数据集的前几行如下所示:
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
ARFF格式的文件如下所示:
@RELATION iris
@ATTRIBUTE sepallength REAL
@ATTRIBUTE sepalwidth REAL
@ATTRIBUTE petallength REAL
@ATTRIBUTE petalwidth REAL
@ATTRIBUTE class {Iris-setosa,Iris-versicolor,Iris-virginica}
@DATA
5.1,3.5,1.4,0.2,Iris-setosa
4.9,3.0,1.4,0.2,Iris-setosa
4.7,3.2,1.3,0.2,Iris-setosa
4.6,3.1,1.5,0.2,Iris-setosa
5.0,3.6,1.4,0.2,Iris-setosa
你可以看到指令以符号(@)开始,其中有一个表示数据集的名称(例如@RELATION iris),有一个指令来定义每个属性的名称和数据类型(例如@ATTRIBUTE sepallength REAL),并有一个指令指示原始数据的开始(例如@DATA)。
ARFF文件中以百分比符号(%)开头的行表示注释。
原始数据部分中具有问号(?)的值表示未知或缺失的值。格式支持数字和分类值(categorical values),如上面的鸢尾示例,但也支持日期和字符串值。
根据您的Weka安装(方式),您的Weka安装目录data /子目录下可能有或者没有一些默认的数据集。与Weka一起分发的这些默认数据集都是ARFF格式,并且具有.arff文件扩展名。
在ARFF-Viewer中加载CSV文件
您的数据可能不是ARFF格式的。
事实上,它更可能是逗号分隔值(Comma Separated Value,CSV)格式。这是一种简单的格式,其中数据在行和列的表格中进行布局,而逗号用于分隔行中的值。引号也可以用来包围值,特别是如果数据包含带空格的文本字符串。
CSV格式很容易从Microsoft Excel导出,所以一旦您可以将数据导入到Excel中,您可以轻松地将其转换为CSV格式。
Weka提供了一个方便的工具来加载CSV文件,并保存成ARFF。你只需要用你的数据集做一次(这样的操作)。
使用以下步骤,您可以将数据集从CSV格式转换为ARFF格式,并将其与Weka workbench结合使用。如果您没有方便的CSV文件,可以使用鸢尾花数据集。从UCI Machine Learning存储库 (传送门)中下载文件并将其保存到iris.csv的当前工作目录中。
1.启动Weka Chooser(选择器)。
Weka GUI选择器的屏幕截图
2.通过点击菜单中的“Tools”,选择“ArffViewer,来打开ARFF-Viewer”。
3.您将看到一个空的ARFF-Viewer窗口。
Weka ARFF Viewer
4.点击“File”菜单,在ARFF-Viewer中打开您的CSV文件,然后选择“Open”。导航到您当前的工作目录。将“Files of Type”过滤器更改为“CSV data files (*.csv)”。选择你的文件,然后点击“Open”按钮。
在ARFF Viewer中加载CSV
5.你现在应该可以看到你的CSV文件加载到ARFF-Viewer的一个示例样本。
6.通过点击“File”菜单并选择“Save as...”,以ARFF格式保存您的数据集。你需要输入带有.arff扩展名的文件名并单击“Save”按钮。
您现在可以将保存的.arff文件直接加载到Weka中。
请注意,ARFF-Viewer提供了在保存之前修改数据集的选项。例如,您可以更改值,更改属性的名称和更改其数据类型。
强烈建议您指定每个属性的名称,因为这将有助于稍后对数据进行分析。另外,确保每个属性的数据类型都是正确的。
在Weka Explorer中加载CSV文件
您也可以直接在Weka Explorer界面中加载您的CSV文件。
如果您急着想快速测试一个想法,这很方便。
本节介绍如何在Weka Explorer界面中加载CSV文件。您可以再次使用虹膜数据集,如果您没有加载CSV数据集,则练习。
1.启动Weka GUI Chooser(选择器)。
2.通过单击“资源管理器”按钮启动Weka资源管理器。
Weka资源管理器的屏幕截图
3.点击“Open file…”按钮。
4.导航到您当前的工作目录。将“Files of Type”更改为“CSV data files (*.csv)”。选择你的文件,然后点击“打开”按钮。
您可以直接用数据开始工作。您也可以通过点击“Save”按钮并输入文件名,以ARFF格式保存数据集。
使用Excel中的其他文件格式
如果您有其他格式的数据,请先将其加载到Microsoft Excel中。
以另一种格式(如CSV)这样使用不同的分隔符或固定宽度字段来获取数据是很常见的。Excel有强大的工具来加载各种格式的表格数据。使用这些工具,并首先将您的数据加载到Excel中。
将数据加载到Excel后,可以将其导出为CSV格式。然后,您可以直接或通过首先将其转换为ARFF格式在Weka中使用它。
资源
下面是一些额外的资源,你会发现这些资源对在Weka中使用CSV data进行工作非常有帮助。
概要
在这篇文章中,您发现了如何将您的CSV数据加载到Weka中进行机器学习。
具体来说,你了解到:
- 关于ARFF文件格式以及Weka如何使用它来表示机器学习的数据集。
- 如何使用ARFF-Viewer加载您的CSV数据并将其保存为ARFF格式。
- 如何直接在Weka Explorer中加载CSV数据并将其用于建模。
如果你有关于本文中的Weka加载数据的任何问题?可以在评论中提出您的问题,我会尽我所能来回答。
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- ActiveMq的顺序性消费问题
- 佳能遭严重勒索软件攻击,10TB数据被窃取,大量服务宕机
- 进程线程剖析(二)-进程组成、状态与特点
- 【Flink】基于 Flink 实时计算商品订单流失量
- 这就是你日日夜夜想要的docker!!!---------TLS加密远程连接Docker
- 【Flink】基于 Flink 的流式数据实时去重
- 从零开始安装穿透式检索
- 使用kind搭建kubernetes
- 如何设计一个牛逼的API接口
- 猿实战17——实现你未必知晓的运费模板
- 这 5 个 VSCode 扩展提高你的开发效率
- 猿实战18——商品发布之类目选择
- 树莓派基础实验1:双色LED灯实验
- 【机器学习基础】机器学习中类别变量的编码方法总结
- 树莓派基础实验2:RGB-LED实验