利用KNIME进行数据挖掘的实验手册
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
利⽤KNIME进⾏数据挖掘的实验⼿册
数据挖掘实验⼿册
本次实践分别⽤两个数据集来进⼀步学习如何在KNIME中对两个数据集进⾏分类,聚类和频繁模式挖掘算法的实践。
两个数据集均来⾃Kaggle⽹站的UCI Machine Learning。
⼀、蘑菇数据集
蘑菇数据集来⾃于Mushroom Classification | Kaggle,该数据集总数据量为8124条,涉及特征包括菌盖形状、菌盖表⾯、⽓味等等22个字段,⽬标是对蘑菇是否有毒进⾏⼆分类,即有毒、⽆毒。
所有的特征都是离散分类特征,在Kaggle 上可以看到各特征的具体含义和属性取值。
本次实践使⽤的软件是KNIME Analytics Platform,其主界⾯如下:
在本次实践过程主要涉及两个区域:⼯作区和节点选项板。
⼯作区放置操作节点和数据流,节点选项板则提供了不同功能的节点。
⾸先介绍两个基本概念:节点和数据流。
KNIME Analytics Platform进⾏的数据挖掘重点关注通过⼀系列节点运⾏数据的过程,我们将这⼀过程称为⼯作流。
也可以说KNIME Analytics Platform是以⼯作流这⼀系列节点代表要对数据执⾏的操作,⽽节点之间的链接指⽰数据的流动⽅向。
通常,KNIME Analytics Platform将数据以⼀条条记录的形式读⼊,然后通过对数据进⾏⼀系列操作,最后将其发送⾄某个地⽅(可以是模型,或某种格式的数据输出)。
使⽤KNIME Analytics Platform处理数据的三个步骤:
1.将数据读⼊KNIME Analytics Platform。
2.通过⼀系列操纵运⾏数据。
3.将数据发送到⽬标位置。
在KNIME Analytics Platform中,可以通过打开新的⼯作流来⼀次处理多个数据流。
会话期间,可以在KNIME Analytics Platform窗⼝右上⾓的流管理器中管理打开的多个数据流。
接下来我们开始对数据集进⾏操作:
第⼀步创建流
在左上⾓菜单栏选择“⽂件”→“新建流”,创建⼀个新的数据流。
然后选择“New KNIME Workflow”。
第⼆步导⼊数据
在节点列表中选择“IO”→“Read”→“CSV Reader”,将其拖⼊⼯作区。
这⾥“CSV Reader”是指从CSV⽂件中读取数据,正好我们下载的源数据⽂件为csv⽂件,⼀般以逗号(,)为分隔符。
双击打开“CSV Reader”对话框,选中之前下载好的数据⽂件,然后对数据格式进⾏设置。
在这⾥主要说以下⼏点:
1.如果⽂件第⼀⾏是字段名,则选中“Has Column Header”,KNIME
Analytics Platform会⾃动提取。
2.如果⽂件显⽰乱码,则在“Encoding”选项卡中修改为正确的编码。
3.⼀些CSV不是以逗号为分隔符的,可以在“Column Delimiter”中选择相
应的符号。
对于Mushroom数据集来说,由于其含有列头但是没有⾏头,这⾥需要选中“Has Column Header”,同时去掉“Has Row Header”的勾选。
设置完成后在节点上点击右键选择“Execute”运⾏节点,读⼊数据。
然后点击右键选择“File Table”,可以看到读⼊的所有数据。
接下来简要分析⼀下数据分布,⾸先看正负样本⽐例。
在节点列表中找到“Views”→“Property”→“Color Manager”。
将其拖⼊⼯作区中,然后将“CSV Reader”和“Color Manager”连接。
接着在“Color Manager”节点上点击右键选择“Configure…”,打开配置对话框,直接点击确定使⽤默认配置即可。
在节点列表中找到“Views” “Pie Chart”。
然后拖⼊⼯作区中,将“Color Manager”节点和“Pie Chart”连接。
然后在“Pie Chart”节点上点击右键选择“Configure”,在“Options”选项卡中选中“Display all rows”,并设置“Pie
Column”为“Class”,然后点击确定。
在“Pie Chart”节点上点击右键选择“Execute and Open Views…”显⽰Class 标签分布的饼图,可以看到,正负样本(e标签和p 标签)数量分布基本⼀致。
可以认为是样本分布均匀的数据。
对于正负样本分布不均匀的样本可以通过下采样等⽅式进⾏处理。
接下来对特征之间的相关性进⾏分析。
在节点列表中找到“Analytics”→“Mining”→“Feature Selection”→“Linear Correlation”然后将其拖⼊⼯作区。
将“CSV Reader”节点与“Linear Correlation”节点连接。
然后在“Linear Correlation”节点上点击右键选择“Configure…”,在配置窗⼝中直接点击确定使⽤默认配置。
然后点击右键选择“Execute and open views…”打开关联图窗⼝,可以看到与Class标签关联度最⾼的特征为Odor,其次为spore-print-color。
Veil-type列全部是⽩⾊,之后将进⾏分析。
第三步数据审核
点击菜单栏“File”→“Install KNIME Extensions…”安装数据审核插件。
等待插件列表加载完成后勾选“KNIME JavaScript Views (Labs)”进⾏安装。
在节点列表中选择“KNIME Labs”→“JavaScript Views (Labs)”→“Data Explorer (JavaScript)”拖⼊⼯作区中
然后将“CSV Reader”和“Data Explorer (JavaScript)”连接起来。
在“Data Explorer”节点上点击右键选择“Execute and open views…”,等待⼀段时间即可打开数据审核界⾯。
其中共有三个选项卡,第⼀个选项卡“Numeric”包含了数字特征的最⼤值、最⼩值、平均值等统计特征,由于蘑菇数据集不包含数字列,因此这⾥为空。
第⼆个选项卡包含了数据的分布和取值范围,可以看到Veil-type中只有⼀个值,在模型中起不到任何作⽤,因此之后需要将其删除。
同样的Stalk-root中缺失值过多,之后也需要将其删掉。
利⽤数据审核我们可以查看数据哪些字段需要做预处理。
第四步数据预处理
现在需要删除上⾯提到的两个字段。
⾸先在节点列表中找到“Manipulation”→“Column”→“Filter”→“Column Filter”。
然后将其拖⼊⼯作区中,与“CSV Reader”节点连接。
在“Column Filter”节点上点击右键选择“Configure…”,在配置窗⼝中设置要删除的两个属性:veil-type和stalk-root。
点击确定后右键点击“Execute”即可。
点击右键选择“Filtered Table”可以查看筛选后的结果。
第五步数据分区
数据在训练前需要分为训练集和测试集,在训练集上进⾏训练,然后测试集上进⾏测试。
我们在节点列表中选
择“Manipulation”→“Row”→“Transform”→“Partitioning”。
将其拖⾄⼯作区并和“Column Filter”连接起来。
点击右键选择“配置”,在这⾥可以选择按照数量划分(即Absolute)以及按照相对⽐例划分(即Relative),这⾥选择Relative,然后填⼊要划分的第⼀部分(也就是训练集)的⽐例80%。
确定后点击右键“Execute”即可。
第六步训练和测试模型
C5.0 模型的⼯作原理是根据提供最⼤信息增益的字段分割样本。
然后通常会根据不同的字段再次分割由第⼀次分割定义的每个⼦样本,且此过程会重复下去直到⽆法继续分割⼦样本。
最后,将重新检查最底层分割,并删除或修剪对模型值没有显著影响的分割。
C5.0 可以⽣成两种模型。
决策树是对由算法建⽴的分割的简单描述。
每个
终端(或“叶”)节点可描述训练数据的特定⼦集,⽽训练数据中的每个观测值都完全属于树中的某个终端节点。
换句话说,对于在决策树中显⽰的任何特定数据记录,仅可能有⼀个预测。
反过来,规则集则是尝试对单个记录进⾏预测的⼀组规则。
规则集源⾃决策树,并且在某种程度上表⽰在决策树中建⽴的经简化或提取的信息版本。
通常,规则集可保留完整的决策树中的⼤部分重要信息,但其使⽤的模型⽐较简单。
由于规则集的这种⼯作⽅式,其属性与决策树的属性不同。
最重要的区别是,使⽤规则集时,可以为任意特定记录应⽤多个规则,也可以不应⽤任何规则。
如果应⽤多个规则,则每个规则将根据与此规则关联的置信度获得⼀个加权“投票”,并通过组合应⽤到所讨论记录的所有规则的加权投票来确定最终的预测。
如果没有规则可应⽤,则会将缺省预测分配到该记录。
CART树是指分类与回归树(Classification and Regression Tree),在SPSS中称为C&T树。
分类和回归(C&R) 树节点是⼀种基于树的分类和预测⽅法。
与C5.0 类似,此⽅法可使⽤递归分区将训练记录分割为具有相似输出字段值的段。
⾸先,“C&R 树”节点通过检查输⼊字段来查找最佳分割(以分割所引起的杂质指标下降情况进⾏测量)。
分割可定义两个⼦组,其中每个⼦组随后⼜被分割为两个⼦组,依此类推,直到触发其中⼀个停⽌标准为⽌。
所有分割都是⼆元的(仅有两个⼦组)。
在节点列表中选择“Analytics”→“Mining”→“Decision Tree”→“Decision Tree Learner”。
然后拖⾄⼯作区并与“Partitioning”连接。
点击右键选择“Configure…”,打开配置对话框。
可以配置的选项有:
●Class Column 类别标签所在的列,这⾥选择“Class”
●Quality Measure评价指标,这⾥默认值为Gini Index(基尼指数)
●Pruning Method剪枝⽅式,这⾥默认为不剪枝
●Min number records per node每个节点的最少记录数,这⾥会影响模
型表现
●Number of threads并⾏运算的CPU线程数
●Force root split column强制根节点在某⼀特征上进⾏划分
●Binary nominal splits是否将分类特征进⾏⼆分划分,如果进⾏⼆分划
分,特征将会被划分为多个⼆叉树,即“属于特征A”和“不属于特征
A”两个分⽀且多个层级
在这⾥点击确定后,点击右键选择“Execute and open views…”会对模型进⾏训练,训练完成后会显⽰决策树的树形结构。
可以看到,Odor作为第⼀层决策树特征,Spore-print-color作为第⼆层决策树特征,这与之前线性回归的结果是⼀致的。
训练完成后我们需要检验模型表现。
在节点列表中找到“Analytics”→“Mining”→“Decision Tree”→“Decision Tree Predictor”。
将其拖⼊⼯作区中然后分别与Learner和Partitioning的第⼆个输出进⾏连接。
点击右键选择“Configure…”,在配置对话框中选择“Append columns with normalized class distribution”,即添加概率列,⽅便之后绘制ROC曲线。
然后点击确定,右键点击“Execute”进⾏预测,再次右键点击“Classified Data”可以看到预测结果。
接下来我们需要对结果进⾏评估。
⾸先在节点列表中找到“Analytics”→“Mining”→“Scoring”→“Scorer”。
然后将其拖⼊⼯作区中,与Predictor相连。
点击右键选择“Configure…”,设置标签列和预测列分别为class和Prediction (class)。
接下来点击右键选择“Execute and open views…”得到混淆矩阵。
可以看到正确率为100%,这是由于数据集本⾝较简单的原因。
接着查看ROC曲线,在节点列表中找到“Analytics”→“Mining”→“Scoring”→“ROC Curve”,将其拖⼊⼯作区中与Predictor相连。
点击右键选择“Configure…”,在配置页⾯中配置类别所在的列,以及正例所对应的概率列。
点击确定后右键选择“Execute and open views…”,打开ROC曲线,可以看到由于正确率为100%,ROC曲线为⼀条折线。
第七步保存模型
为了供之后预测数据使⽤,可以将模型保存在本地。
在节点列表中找到“IO”→“Write”→“PMML Writer”。
然后将其拖⼊⼯作区中与Learner相连接。
右键点击“Configure…”进⾏配置,主要是选择模型保存位置,以及是否可以覆盖已有⽂件。
在保存之后还可以通过“PMML Reader”将模型⽂件读取出来,⽤于预测。
最终得到的整体⼯作流为:
第⼋步聚类模型
8.1 数据预处理
本部分尝试使⽤K-Means聚类算法来对mushroom的毒性进⾏聚类。
在对原始数据进⾏相同的预处理之后(删除veil-type和stalk-root数据),因为K-Means算法需要计算数据之间的距离,⽽原始数据的各个特征是字符表⽰的,需要将其转化为数字格式:选择Column--Convert&Replace--Category To Number,将其拖动到⼯作区并与之前的Column Fliter相连接:
右键configure,将class类别排除转换,并且将Append columns前的勾除去,这样⼀来原始数据将直接被数字替代,配置好后右键节点执⾏:
执⾏后可以右键选择Processed Data查看转换后的数据,可以发现除了class以外的列都被数字所替代:。