Orange数据挖掘

17 Mar 2025 | 5 分钟阅读

Orange 是一个 C++ 核心对象和例程库,集成了多种标准和非标准的机器学习和数据挖掘算法。它是一个开源的数据可视化、数据挖掘和机器学习工具。Orange 是一个可脚本化的环境,用于快速原型化最新的算法和测试模式。它是一组基于 Python 的模块,存在于核心库中。它实现了一些执行时间非必需的功能,这些功能是用 Python 实现的。

Orange Data Mining

它集成了多种任务,如决策树的漂亮打印、Bagging 和 Boosting、属性子集等等。Orange 是一组图形化部件(widgets),它们利用核心库和 Orange 模块的策略,并提供了一个不错的用户界面。这些部件支持基于数字的通信,可以通过一个称为 Orange Canvas 的可视化编程工具组合成应用程序。

所有这些共同作用,使得 Orange 成为一个独特的数据挖掘和机器学习的组件化算法。Orange 适用于那些希望创建和测试自己算法,并尽可能重用代码的经验用户和数据挖掘与机器学习分析师,也适用于刚刚进入该领域,可以编写简短 Python 代码进行数据分析的新手。

Orange 的目标是提供一个平台,用于基于实验的选择、预测建模和推荐系统。它主要用于生物信息学、基因组学研究、生物医学和教学。在教育领域,它用于为生物学、生物医学和信息学专业的学生提供更好的数据挖掘和机器学习教学方法。

Orange数据挖掘

Orange 为开发者、分析师和数据挖掘专家提供了一个灵活的领域。Python,一种新一代的脚本语言和编程环境,使得我们的数据挖掘脚本可以简单而强大。Orange 采用基于组件的方法进行快速原型开发。我们可以像搭积木一样简单地实现我们的分析技术,甚至可以利用现有的算法。什么是用于可视化编程的 Orange 部件的 Orange 组件?。这些部件利用一个专门设计的通信机制来传递分类器、回归器、属性列表和数据集等对象,从而能够轻松构建使用现代方法和技术的相当复杂的数据挖掘方案。

Orange 核心对象和 Python 模块集成了许多数据挖掘任务,这些任务远不止于数据预处理,还包括评估和建模。Orange 的操作原理是涵盖数据挖掘和机器学习中的技术和视角。例如,Orange 的决策树自顶向下归纳是一种由多个组件构建的技术,其中任何一个组件都可以用 Python 进行原型化,并替换原始组件。Orange 部件不仅仅是提供 Orange 中特定策略的图形界面的图形对象,它还包含一个灵活的信号机制,用于通信和交换数据集、分类模型、学习器、存储评估结果的对象等。所有这些思想都很重要,它们共同使 Orange 在众多数据挖掘结构中脱颖而出。

Orange 部件

Orange 部件为我们提供了 Orange 数据挖掘和机器学习技术的图形用户界面。它们包含用于数据输入和预处理、分类、回归、关联规则和聚类的部件,以及用于模型评估和可视化评估结果的一组部件,还有用于将模型导出为 PMML 的部件。

Orange Data Mining 1

部件通过从发送者到接收者的令牌来传递数据。例如,一个文件部件输出数据对象,这些对象可以被一个分类树学习器部件接收。分类树构建一个分类模型,然后将数据发送到图形化显示树的部件。评估部件可以从文件部件和对象获取数据集。

Orange 脚本

如果我们想访问 Orange 对象,那么我们就需要通过脚本编写自己的组件,并设计自己的测试方案和机器学习应用程序。Orange 接口连接到 Python,一个易于使用的模型脚本语言,具有清晰而强大的语法以及广泛的附加库。与任何脚本语言一样,Python 可以用于相互测试一些想法,或者开发更详细的脚本和程序。

让我们通过一个例子来了解 Python 和 Orange 的使用。考虑一个简单的脚本,它读取数据集并打印使用的属性数量。我们将使用 UCI 机器学习库中的一个名为“voting”的分类数据集,该数据集记录了印度议会 MP(国会议员)的十六项关键投票,并为每位 MP 标记了党派成员身份。

import orange

data1 = orange.ExampleTable('voting.tab')

print('Instance:', len(data1))

print(Attributes:', 1len(data.domain.attributes))

在这里,我们可以看到脚本首先加载了 orange 库,读取了数据文件,并打印出了我们关心的数据。如果我们把这个脚本保存在 script.py 文件中,并在 shell 中运行命令 "python script.py",确保数据文件在同一个目录下,我们就会得到

Instances: 543

Attributes: 16

让我们继续我们的脚本,该脚本使用相同的由朴素贝叶斯分类器创建的数据,并打印出前五个实例的分类。

model = orange.BayesLearner(data1)

for i in range(5)

print(model(data1[i]))

生成分类模型很容易;我们调用了 Orange 的对象(Bayes Learner)并向其提供了数据集。它返回另一个对象(朴素贝叶斯分类器),当给定一个实例时,它会返回可能类的标签。在这里,我们可以看到脚本这一部分的输出。

inc

inc

inc

bjp

bjp

在这里,我们需要找出正确的分类是什么,我们可以打印出我们前五个实例的原始标签。

for i in range(5)

print(model(data1[i])), 'originally' , data[i].getclass()

我们发现朴素贝叶斯分类器错误地分类了第三个实例。

inc originally inc

inc originally inc

inc originally bjp

bjp originally bjp

bjp originally bjp

Orange 中实现的所有分类器都是概率性的。例如,它们假设类别的概率。因此,在朴素贝叶斯分类器中,我们可能想知道第三个案例中我们错过了多少。

n = model(data1[2], orange.GetProbabilities)

print data,domain.classVar.values[0], ':', n[0]

在这里,我们认识到 Python 的索引是从 0 开始的,并且分类模型在调用分类器时带参数 orange.-Getprobabilities 会返回一个概率向量。我们的模型估计“inc”的概率非常高。

Inc : 0.878529638542