前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Weka机器学习使用介绍(数据+算法+实战)

Weka机器学习使用介绍(数据+算法+实战)

作者头像
Minerva
修改2021-01-11 17:01:13
9.5K2
修改2021-01-11 17:01:13
举报

Weka机器学习使用介绍(数据+算法+实战)

Weka是怀卡托智能分析环境(Waikato Environment for Knowledge Analysis)的英文字首缩写,新西兰怀卡托大学用Java开发的数据挖掘著名开源软件。功能有数据处理、特征选择、分类、回归、可视化等,支持多种数据文件格式,如arff、xrff、csv等,主流的数据格式是csv和arff。

本文将利用一个csv数据对Weka的使用过程进行简单的介绍,并采用其中一种机器学习算法决策树进行实战,其他的一些机器学习算法在机器学习专辑里都有介绍。

一、 Weka介绍 下载链接:https://waikato.github.io/weka-wiki/downloading_weka/,里面有windows、mac os和linux等平台版本。 Weka的主页面窗口有四个模块:

  1. Explorer:进行数据的特征选择、分类、回归、聚类、关联规则、数据可视化等功能,口语进行不同的实验对比不同算法的结果。
  2. Experimenter:使用增量式的算法处理大型数据集,对不同学习方案进行数据测试。
  3. KnowledgeFlow:通过拖拽的方式建立实验方案,与Explorer相似。
  4. Workbench:
  5. Simple CLI:命令行界面,用于和用户进行交互。 下面的实战我们以Explorer为例

二、 数据读取和数据预处理 我们在获取的数据文件一般来说第一列都是ID或Name,中间的一些列是对应的特征种类,最后一列是每一行ID的标签class,首先删掉ID列,并且确保class的取值为0或1。

1. 数据读取 打开Explorer界面,点击Open file,选择保存目录下的Weka_Data.csv(在公众号回复Weka_Data即可得到csv文件的下载地址),文件中是包含20个特征的20个数据和对应的class。

该模块有6个选项卡,用来选择不同的功能面板,从左到右依次是Preprocess(预处理)、Classify(分类)、Cluster(聚类)、Associate(关联规则)、Select attribute(特征选择)和Visualize(可视化)。

Filter模板针对特征(attribute)和样本(instance)提供了大量的操作方法。Current relation是读取的文件信息。Attributes包含当前的特征、样本信息,并提供了特征选择和删除的功能。用鼠标选择单个特征后,Selected attribute将显示该特征的信息。包括最小值、最大值、期望和标准差。右下角提供了可视化功能,选择特征后,该区域将显示特征值在各个区间的分布情况。

Filters可分为两大类,supervised(监督、管理)和unsupervised。supervised下的方法需要类别标签,而unsupervised则不需要。attribute类别表示对特征做筛选,instance表示对样本做选择。

通常对于Weka来说并不支持中文,Weka支持的有四种数据类型,分别是:numeric--数值型,--分类(nominal)型,string--字符串型,date []--日期和时间型。 对标签进行类型转换,读取的class数据是Numeric,需要转换为Nominal,在Filter处依次选择weka-filters-unsupervised-attribute-NumericToNominal。

之后将attributeIndices设置为class所在的No.我们这里改为21,点击Apply,可以看到class的Type变成Nominal了。

2. 数据预处理

2.1 特征值归一化 如果导入的各列特征数据没有经过归一化处理,我们需要对所有数据进行normalize处理,在Filter处依次选择weka-filters-unsupervised-attribute-Normalize,在ignoreClass选True,这样就将所有特征归一化到0-1之间了。

2.2 特征选择 在Filter选择weka-filters-supervised – attribute下的AttributeSelection,该界面有两个选项,evaluator是评价特征集合有效性的方法,search是特征集合搜索的方法。在这里,我们使用InformationGainAttributeEval作为evaluator,使用Ranker作为search,表示我们将根据特征的信息增益值对特征做排序。Ranker中可以设置阈值,低于这个阈值的特征将被扔掉,我们将阈值设置为0,点击apply,可以看到特征被重新排序,低于阈值的已被删掉。

为了使用方便我们可以将该处理后的数据通过Save保存为arff格式文件。

之后直接导入arff格式的数据即可,省去了中间数据预处理的步骤。

三、 模型选择和实验 我们对预处理之后的数据进行分类,打开Classify选项卡

Classifier提供weka里的分类器,常用的有bayes下的Naïve Bayes朴素贝叶斯、BayesNet贝叶斯信念网络;functions下的Liblinear、LibSVM(需要额外安装扩展包)、Logistic Regression、Linear Regression;lazy下的IBK(KNN);meta下的boosting和bagging分类器;trees下的J48(C4.5)、RandomForest。

Test options是评价模型效果的方法,Use training set:只使用训练集,即训练集和测试集使用同一份数据,一般不使用这种方法。Supplied test set:设置测试集,可以使用本地文件或者url,测试文件的格式需要跟训练文件格式一致。Cross-validation:交叉验证方法,N-folds cross-validation是指,将训练集分为N份,使用N-1份做训练,使用1份做测试,如此循环N次,最后整体计算结果。Percentage split:按照一定比例,将训练集分为两份,一份做训练,一份做测试。在这些验证方法的下面,有一个More options选项,可以设置一些模型输出,模型验证的参数。

Result list保存分类实验的历史,右键点击记录,可以看到很多选项。常用的有保存或加载模型以及可视化的一些选项。

Classifier output分类器的输出结果, Run information给出了特征、样本及模型验证的一些概要信息;Classifier model给出的是模型的一些参数,不同的分类器给出的信息不同。最下面是模型验证的结果,给出了一些常用的一些验证标准的结果,比如准确率(Precision),召回率(Recall),真阳性率(True positive rate),假阳性率(False positive rate),F值(F-Measure),Roc面积(Roc Area)等。Confusion Matrix给出了测试样本的分类情况,通过它,可以很方便地看出正确分类或错误分类的某一类样本的数量。

我们采用常用的J48决策树分类器进行4折交叉验证,得到的实验结果如下:

在Result list里右键实验,Visualize Tree,得到图形界面的直观的决策树。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-06-29,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Python编程和深度学习 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档