Orange3是一个很简单快捷的数据挖掘和探索软件,能快速的应用机器学习算法对数据进行分析,但是中文版的教程偏少,因此结合YouTube上的官网视频及其他资料,在此对软甲的使用技巧进行简单的记录的总结。
能力有限,部分内容可能不够准确,如有发现,会及时修改。
Getting Started with Orange
01 Welcome to Orange
当你第一次打开Orange3的时候,首先看到欢迎界面。从这里你可以开始一个新的数据分析流程或者打开最近的文件。
Orange3与众不同的特性是小部件(widgets),它是Orange中的基本计算单元。可以读取、处理和可视化数据,聚类、建立预测模型等其他一系列的数据探索工作。它们都分布在主界面的左边。
图1 Orange欢迎界面
接下来介绍读取文件的流程:- File部件:用于读取我们的数据。
- 双击打开File文件管理器,读取文件(图2)。
orange的基本格式是tab,但是也可以很轻松的读取xlsx等格式的文件。
图2 File文件读取界面
- Data Table部件:查看具体的数据(图3)。
图3 Data Table界面
- Scatter Plot部件:查看散点图特征(图4),"Find information Projections"可以发现对分类最有效的特征。
图4 Scatter Plot部件界面
02 Data Workflows
在Orange3中创建数据分析工作流是很简单的,我们首先在File部件中加载时数据,随后在Data Table中查看数据。
- Distributions部件:可以查看数据分布,判断哪些特征数据有较好的分类属性(图5)。
图5 Distribution部件界面
- Scatter Plot部件:"Find information Projections"可以发现对分类最有效的特征,选择一部分重叠的散点数据,随后添加一个Data Table可以查看已选择的数据特征(图6)。
图6 Scatter Plot部件中的Find information Projections及部件间的数据通信
03 Widgets and Channels
一些数据挖掘部件和它们之间的信息串联
Tips:为了有更大的画布,可以点击工具栏中的view中Expand Tool Duck。
Orange中有3种方式可以加载部件(widgets):
a)点击小部件窗口,部件会出现在右侧的画布(canvas)中;
b)点击并拖拽部件到画布中;
c)画布上右键,部件菜单会出现,而且可以使用搜素框。
d)从某一部件的输出拖拽一个连接线到画布的空白区域,orange会建议一些能够可该部件链接的部件(orange不会允许你链接互不兼容的两个部件);
Orange中的部件连接:
双击连接线可以对部件之间的连接进行编辑(图7)。
图7 部件间的数据连接
04 Loading Your Data
准备程序所能够读取的数据是数据挖掘工作中的重点。
Orange可以读取Excel、tab和逗号分隔的文件。
下面将简述Orange中对数据的预处理过程:
本次处理的表格数据如下,可自行复制到表格中保存进行操作。
name | gender | height | weight | eye color | hair color |
---|---|---|---|---|---|
Jill | female | 1.6 | 52 | blue | brown |
Jack | male | 1.75 | 78 | brown | brown |
Mark | male | 1.65 | 67 | brown | black |
Ann | female | 1.7 | 62 | green | blond |
Beb | male | 1.85 | 89 | blue | blond |
Tom | male | 1.9 | 93 | blue | red |
Kate | female | 1.67 | 56 | brown | brown |
Mary | female | 1.64 | 70 | blue | red |
- Select Columns部件:与File部件连接,可对数据中的特征(feature)、目标变量(Target Variable)和元属性(Meta Attributes)进行选择(图8上),如图8中将性别gender设置为目标变量,name设置为元属性,随后使用Data Table部件就可以看到列特征的不同(图8下)。
图8 Select Columns部件界面及Data Table
- Save Data部件:可以将数据进行保存,建议tab格式。
- Orange数据格式:(1)C代表了连续型的数值数据(numerical);(2)D代表了离散(discrete)和分类(categorical)数据;(3)S代表文本数据(string);
- 此外,class可表示属性种类,meta代表了一些额外的信息。其表格形式如下:
name | gender | height | weight | eye color | hair color |
---|---|---|---|---|---|
s | d | c | c | d | d |
meta | class | ||||
Jill | female | 1.6 | 52 | blue | brown |
Jack | male | 1.75 | 78 | brown | brown |
Mark | male | 1.65 | 67 | brown | black |
Ann | female | 1.7 | 62 | green | blond |
Beb | male | 1.85 | 89 | blue | blond |
Tom | male | 1.9 | 93 | blue | red |
Kate | female | 1.67 | 56 | brown | brown |
Mary | female | 1.64 | 70 | blue | red |
05 Hierarchical Clustering-层次聚类
聚类是机器学习中的一个重要任务之一,借助Orange可以实现快速的层次聚类算法。
层次聚类算法的优势在于1:(1)能够使我们绘制出树状图(dendrogram,基于二叉层次聚类的可视化),有助于我们使用有意义的分类法解释聚类结果。(2)无需事先指定簇数量。
层次聚类主要有两种方法:凝聚(agglomerative)层次聚类和分裂(divisive)层次聚类,差异在于簇合并的方向。
以凝聚层次聚类为例,判定簇间距离的有五种标准方法:
- 单连接(single linkage):计算每一对簇中最相似两个样本的距离,并合并距离最近的两个样本所属簇。
- 全连接(complete linkage):与单连接相反,通过比较找到分布于两个簇中最不相似的样本(距离最远的样本),进而完成簇的合并。
- 平均连接(average linkage):合并两个簇间所有成员间评价距离最小的两个簇。
- ward连接(ward linkage):被合并的是使得SSE增量最小的两个簇。
- weighted:待之后补充
这里我们将使用鸢尾花数据集进行层次聚类,流程及图示如下:
- Distances部件:通过连接File部件,计算不同的行或列的距离(如欧式距离)。
- Hierarchical Clustering部件:通过与Distances部件连接,可对层次聚类结果进行可视化。
图9 层次聚类方法
06 Making Predictions - 进行预测
作为一名数据科学家,最重要的一点是能够预测未来。
使用Predictions Widget可以预测数据集中实例的分类标签。
这里使用一个蔬菜和水果的分类问题作为案例,训练集中有9列特征,两种分类。这里分别使用了决策树模型和逻辑回归模型。
流程及图示如下:
- Data info:查看数据信息,;
- Tree:决策树模块,;
- Tree Viewer:决策树可视化模块,;
- Logistic Regression:逻辑回归模块,;
- Predictions:预测模块,;
图10 预测流程
图11 决策树可视化
图12 不同模型的预测结果展示
07 Model Evaluation and Scoring - 模型评估和评分
orange中可以直观的对机器学习模型进行评估
流程及图示如下:
- Test and Score:测试和评分,;
- Confusion Matrix:混淆矩阵,;
- Random Forest:随机森林,;
图13 模型的测试与评估
图14 测试和评分
图15 混淆矩阵
图16 随机森林
08 Add-ons - 插件
orange具有不同的插件来丰富数据分析的流程。
图17 插件演示
图18 插件窗口
09 Principal Component Analysis - 主成分分析
如果一个数据有很多特征,如何知道哪些特征是主要影响因素?如何把数据投影到二维的平面?一个最流程的方法就是主成分分析(PCA)。
首先,通过最简单的流程可以看到pca的工作流程,使用Paint Data
模块绘制具有线性相关的数据(图19),随后使用PCA
模块及Data Table
模块,修改数据连接方式(图20),呈现主成分分析结果(图21)。
图19 绘制线性相关数据
图20 修改数据连接方式
图21 主成分分析流程及结果
参考素材
(美)塞巴斯蒂安·拉施卡,瓦希德·米尔贾利利著.Python机器学习 第2版[M].北京:机械工业出版社,2019 ↩︎