热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

RapidMiner数据挖掘入门

RapidMiner数据挖掘入门之一:概要1简介RapidMiner原名Yale,它是用于数据挖掘、机器学习、商业预测分析的开源计算环境。根据KDnug

RapidMiner数据挖掘入门之一:概要

1 简介
RapidMiner原名Yale,它是用于数据挖掘、机器学习、商业预测分析的开源计算环境。根据KDnuggets在2011年的一次投票显示,从使用率来看该软件比之R语言还要略胜一筹。因为其具备GUI特性,所以很适合于数据挖掘的初学者入门。

RapidMiner提供的数据挖掘和机器学习程序包括:数据加载和转换(ETL),数据预处理和可视化,建模,评估和部署。数据挖掘的流程是以XML文件加以描述,并通过一个图形用户界面显示出来。RapidMiner是由Java编程语言编写的,其中还集成了WEKA的学习器和评估方法,并可以与R语言进行协同工作。


2 学习资源
软件的帮助菜单中自带了26个tutorial,可以帮助用户进行基本入门。另外在sample有也有不错的案例数据和流程可供参考学习。从官方网站可以下载到一份简单的用户手册,另外还有相应的资源站提供了很好的视频教程。

3 基本概念
rapidminer中的功能均是通过连接各类算子(operataor)形成流程(process)来实现的,整个流程可以看做是工厂车间的生产线,输入原始数据,输入出模型结果。算子可以看做是执行某种具体功能的函数,不同算子有不同的输入输出特性。

大体上有这样几类算子:
  • 流程控制类,是为了实现循环和条件功能。
  • 数据输入和输出类,是为了实现数据交换。
  • 数据转换类,包括各种数据抽取、清洗整理功能;
  • 建模类,包括分类回归建模,关联分析、聚类分析、集成学习等功能。
  • 评估类,包括多重交叉检验,自助法检验等功能
软件有两个主要的工作区,一个是流程设计工作区,本区左侧可以看到各类算子和库,中间的主流程设计区,下方是错误提示区,右侧是参数设置区。另一个是结果显示工作区。


将算子拖入主流程工作区后,它会以一个方箱形式呈现,不同的颜色暗示着不同的函数功能。箱体左侧是输入接口,对应着输入类型的缩写。右侧对应输出接口和相应缩写。左下角会有三种颜色的状态灯,红灯表示关于该算子的设置错误,黄灯表示设置正常但还未进行过执行操作,绿灯表示设置正常且已经进行过执行操作。


在建模时,变量(attributes)会分为两个大类,普通变量称为regular,而目标变量称为label。这在有监督学习时需要特别留意。从数据特征来分,又可分为数值变量numeric,分类变量nominal,其中又有两值分类变量binominal,多值分类变量polynominal。不同的算子对于输入数据的类型有着不同的要求,这点需要在算子帮助中仔细阅读。

4 建模一般流程
  • 新建一个库(Repository)
  • 选择需要的算子(operator)放入主流程(main process)中
  • 设置算子相关参数 (parameter)
  • 进行算子连接
  • 执行流程以得到结果

rapidminer数据挖掘入门之二:数据导入、预处理和绘图

1 基本概念
当安装软件时rapidminer会问你新建库文件在所在地,也就是Repositories,它相当于是用户的所有资料存放地。库中主要存放两种资料:一种是建模需要的数据(Data),另一种是建模用到的模型,或称为流程(Processes)。在安装完软件后,用户可以从Repositories下面看到sample文件,里面提供了用来练习用的数据和模型。

2 数据导入
数据导入有两种方式:
第一种是在Repositories菜单中点击import,可以读取CSV等五种格式数据,导入后以data形式存在库中,可随时拖拽到主流程图中调用,将会显示为Retrieve。

第二种是以算子(Operators)形式导入,从算子中的import类中可以选择十几种导入算子拖拽到主流程图中,然后在设置窗口确定资料来源。


3 数据预处理
数据预处理主要通过Data Transformation算子实现中,其中包括了这样几个大类:
  • 重定义,在数据导入时软件会让你定义哪些属于预测变量,哪些属于响应变量,如果在导入阶段没有定义,则可以在预处理阶段用(Set Role)算子进行再定义,否则会无法进行分类建模。
  • 数据类型转换,数据大致上可分为数值(numerical)、两类(Binomial)、多类(Polynomial)数据,有时候希望相互转换,这就要用到Type Conversion类的算子来处理。
  • 数据标准化,标准化数据和还原是经常用到的功能,分别对应Normalize和De-Normalize算子,
  • 数据的清理,有这样几种数据可能是需要清理的,一是离群点,通过Detect Outier进行检测;二是缺失数据,通过Replace Missing Values进行处理;三是近似于常数的变量,通过Remove Useless Attribute算子来处理;四是相关度很高的变量,用Remove Correlated Atributes算子处理。
  • 数据抽样,通过sample算子实现。
4 数据绘图

绘图是在result overview窗口中实现,我们以著名的鸢尾花数据为例。首先将库中sample下的iris拖入Main Process,然后将其进行标准化,再点击大三角符号进行运算。软件会自动转到结果窗口,在该窗口选择plot view就可以选择多种绘图方式,下图就是所绘制的三维散点图:

rapidminer数据挖掘入门之三:特征选择

在一般数据分析条件下,样本集合就类似一个Excel表格,每个样本数据排为一行,而纵列则代表了样本不同的特征或属性。有时候样本数据的特征过多,甚至特征数超过样本数就形成所谓的“维灾难”。

维数过高对于大多数回归分类模型来说是难以忍受的,而且这么高维特征可能会大大干扰训练效果、降低分类性能,因此有必要采取措施进一步地降低特征空间的维数。降维过程包括两类方法:一种是特征选择又称为子集选择,即从最初的N个特征中选取n个特征,而这n个特征可以更简洁、更有效地表示样本的信息。另一种是数据变换,即把N个原始特征变换为n个新的特征,例如主成分分析、投影寻踪方法。

特征选择的一般思路是:构造一个评估函数,对特征子集中的每一个特征进行独立的评估,使每一个特征得到一个评估分,然后对所有特征按照其评估分大小进行排序,选取满足阀值的预定数目个特征形成特征子集。


从使用方法上,特征选择又分为过滤器(Filter)方法和嵌入(Wrapper)方法,Filter是独立于分类器训练的,而Wrapper是结合分类器的效果进行选择的。Filter处理速度快,而Wrapper比较准确,但丧失了数据的一般性。rapidminer就采用Wrapper方法。

我们首先在Repositories中选择sample->processes->04_Attributes->10_ForwardSelect。该例子中用的方法是以前向搜索为选择顺序,以回归均方误为评估指标进行特征选择。

点击运行,然后观察结果窗口,在ProcessLog标签下观察散点图,纵轴选performance,横轴选generation,可以观察到在选择3个变量时,均方误达到最低,从ExampleSet标签可以看到最终选择了a1,a2,a3,这三个变量。

rapidminer数据挖掘入门之四:建模和评价(完)

rapidminer中提供了大量的建模方法或学习器,可用于不同情况下的回归和分类问题。从常见的线性回归、决策树到神经网络和支持向量机。此外还提供了集成学习器,即将多个学习器组合使用以提高预测能力,例如Bagging和Boosting,以及Stacking。

这些学习器都可以看做是一个黑箱,输入数据,输出模型和预测结果。在使用这些学习器时要注意的一点就是:不同的学习器需输入的数据类型不同。以Decision Tree学习器为例,它可以输入numerical attributes(数值数据自变量)、binominal attributes(两分类数据自变量)、polynomial attributes(多分类数据自变量),以及polynominal label(多分类数据因变量) binominal label(两分类数据因变量),但它不能处理numerical label(数值数据因变量)。这些信息都可以在学习器上通过帮助信息了解。


在建模时,我们通常会将样本数据分为两个部分,一半做为训练样本,另一半做为检验样本,那么这如何来进行呢?首先还是将iris数据拖入,在后面加上split data算子,该算子将数据分为两个等份,一部分数据连接到decision tree用于建模,另一部分连接到apply model算子用于模型检验。还需要将decision tree算子的输出连接到apply model算子的输入,将apply model的lab输出连接到performance进行检验评价,最后将mod输出和per输出都连接到右边墙上即可。然后点击运行三角键就可以得到最终的结果输出。整个连接图应该如下图所示:

另一种常用的检验方法是cross-validation(交叉检验),以十重交叉检验为例,也就是将全部数据随机地分为等量的十份,选择其中的9份作为训练数据,剩下1份作为检测数据来评价模型。然后更换其中的1份数据,重复实验。这样得到10组不同的评价指标,最后综合评判模型的表现。在rapidminer中需要用X-Validation算子来实现这一功能。流程图如下所示,
需要注意validation是一个嵌套算子,双击进入后需要设置学习器等子模块。


推荐阅读
  • Spring源码解密之默认标签的解析方式分析
    本文分析了Spring源码解密中默认标签的解析方式。通过对命名空间的判断,区分默认命名空间和自定义命名空间,并采用不同的解析方式。其中,bean标签的解析最为复杂和重要。 ... [详细]
  • YOLOv7基于自己的数据集从零构建模型完整训练、推理计算超详细教程
    本文介绍了关于人工智能、神经网络和深度学习的知识点,并提供了YOLOv7基于自己的数据集从零构建模型完整训练、推理计算的详细教程。文章还提到了郑州最低生活保障的话题。对于从事目标检测任务的人来说,YOLO是一个熟悉的模型。文章还提到了yolov4和yolov6的相关内容,以及选择模型的优化思路。 ... [详细]
  • 本文介绍了使用kotlin实现动画效果的方法,包括上下移动、放大缩小、旋转等功能。通过代码示例演示了如何使用ObjectAnimator和AnimatorSet来实现动画效果,并提供了实现抖动效果的代码。同时还介绍了如何使用translationY和translationX来实现上下和左右移动的效果。最后还提供了一个anim_small.xml文件的代码示例,可以用来实现放大缩小的效果。 ... [详细]
  • Java序列化对象传给PHP的方法及原理解析
    本文介绍了Java序列化对象传给PHP的方法及原理,包括Java对象传递的方式、序列化的方式、PHP中的序列化用法介绍、Java是否能反序列化PHP的数据、Java序列化的原理以及解决Java序列化中的问题。同时还解释了序列化的概念和作用,以及代码执行序列化所需要的权限。最后指出,序列化会将对象实例的所有字段都进行序列化,使得数据能够被表示为实例的序列化数据,但只有能够解释该格式的代码才能够确定数据的内容。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 怀疑是每次都在新建文件,具体代码如下 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • Android系统移植与调试之如何修改Android设备状态条上音量加减键在横竖屏切换的时候的显示于隐藏
    本文介绍了如何修改Android设备状态条上音量加减键在横竖屏切换时的显示与隐藏。通过修改系统文件system_bar.xml实现了该功能,并分享了解决思路和经验。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
author-avatar
殇猿
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有