excel学习库

excel表格_excel函数公式大全_execl从入门到精通

通过Python在Excel中使用机器学习

数据观世界原文作者:Tony Roberts原文地址:https://datascienceplus.com/machine-learning-in-excel-with-python/ 伴随着大量的研究和媒体的关注,机器学习正处于快速发展的状态,它已经成为了很多行业中的重要话题之一。本文并不是对机器学习或其最新技术的介绍,而是向大家展示如何在Excel中使用建立好的机器学习模型。 为什么这是重要的?目前很多公司投入越来越多的资金用于研发基于机器学习的预测模型,能够通过Excel使用这些模型无疑会为相关工作开辟一系列可能性。 PyXLL( https://www.pyxll.com/ ),作为Excel的一个插件,它能够允许我们在Excel中使用Python。通过它,我们能使用Python代码添加用户自定义的函数、宏、菜单等,甚至可以利用整个Python生态系统,这非常适合将机器学习引入Excel。 本文将演示如何在Excel中利用Python构建的机器学习模型对动物进行分类。 本文所使用的所有代码和数据都可以通过名为pyxll-examples的github仓库获取,链接:https://github.com/pyxll/pyxll-examples/tree/master/machine-learning 。 决策树 决策树是机器学习中用于进行分类或回归任务的一种方法,接下来我们将使用决策树来解决动物分类问题。 决策树可以依据多种特征和一个目标特征将一组训练数据分成多个子集,它是基于多种特征来执行此操作并创建数据子集树,叶节点包含用于对训练模型的新查询的预测。以下示例将帮助我们了解其工作原理。 假设我们有一组不同动物的数据集,其中每种动物都具有多种不同特征,并且每个动物都被标记为“哺乳动物”、“鸟”、“爬行动物”、“昆虫”、“软体动物”和“两栖动物”。那么,如果给我们一个此数据集之外的同样拥有这些特征的动物,我们该怎样预测它属于哪类动物呢? 直观来讲,我们可能会将数据进行如下拆分:依据特征,以树的形式来划分我们的数据,将有利于我们对新输入的数据进行分类预测。决策树对新输入数据分类的准确程度取决于该树中的决策对现实状况的反应程度。 在这个例子中,我通过自己的直观感受和知识构建了决策树,机器学习为我们做的是弄清楚如何根据训练集中的多种特征自动对数据进行分类,这就是我们所说的训练模型。这点是非常强大的,相比于人工,一个算法可以在较短的时间内分析更多的数据。 关于决策树的工作方式的内容还有很多,尤其是构建决策树的数学方法方面。我们不会在本文中详细介绍这一点,在下一节中,我们将构建一个示例模型,并展示如何从Excel中使用它。 训练一个示例模型 继续上面的部分,我们将训练一个模型,来使用决策树对动物进行分类。我们使用的是UCI Zoo(https://archive.ics.uci.edu/ml/datasets/zoo )数据集,它包含了101个动物的17种布尔型特征,以及我们拿来作为目标特征的分类属性。 我们将使用pandas来加载数据,使用scikit-learn来构建决策树。 首先,我们将数据加载为一个pandas数据框,并对训练特征和目标特征(动物类别)进行划分,然后将数据分为训练集和测试集。SciKit-Learn使用训练集训练模型,我们保留测试集来衡量模型的准确率。重点来了!使用scikit-learn的DecisionTreeClassifer和训练数据来对我们的决策树模型进行训练。 对于实际工作,我们可能会使用几个调整参数来避免过拟合。这里我们将树的最大深度设置为5,您也可以调试此值并查看它对结果的影响。我们仅仅通过以上两行代码就完成了决策树模型的构建与训练!接下来使用测试集来检验模型预测结果的准确率。然后,我们便可以使用训练好的决策树模型来对新的数据进行预测。从Excel中调用模型 我们对模型进行构建和测试之后,就可以来使用它了。Excel是交互式数据处理的绝佳前端工具,它几乎无处不在,因此能够将您的机器学习模型交付给使用Excel的非开发人员使用,可以为您的业务提供了大量机会。即使模型被用作实时或批处理系统的一部分时,能够以交互方式调用模型对理解系统行为也是非常有用的。 幸运的是,现在将Python编写的机器学习模型导入Excel非常简单,PyXLL插件能满足我们将Excel与Python结合的一切需求。我们所需要做的就是在Python中通过pyxll库添加新的@xl_func装饰器,然后在Excel中通过PyXLL插件加载我们的模型模块或函数即可。(译者注:相当于在Python中为Excel编写新的函数或模型,然后在Excel中通过插件对其进行调用。) 如果您对PyXLL完全陌生,可以参考PyXLL的官方文档( https://www.pyxll.com/docs/introduction.html )。 构建决策树 我们从一个函数开始,以获得决策树。用户将调用此方法来获取决策树对象,然后将该结果传递给后续函数以进行预测。在这里,我们将再次构建决策树,但是对于工作中更复杂的应用,我们可以离线训练模型并保存训练好的模型(例如使用“pickle”),当再次使用时只需加载它而不是重新构建。在为Excel创建模型时,我们可以使用一些有趣的训练参数。除了@xl_func装饰器以外,以上代码和之前我们使用的是完全一样的。@xl_func装饰器的作用就是告诉Excel中的PyXLL插件,我们希望以上函数可以作为Excel中的用户自定义函数来使用。字符串“float, int, int: object”是函数签名,这是可选的,但是没有它用户可能会在Excel中给函数传入各种类型(包括字符串等)的数据,这有可能会导致错误的发生。返回“object”类型,意味着“DecisionTreeClassifier”对象将作为Python对象返回给Excel,而不用尝试将其转换为任何其他东西,该函数会返回一个可以传递给其他Python函数的处理。 此代码应添加到新模块中,并将该模块添加到pyxll.cfg配置文件中的模块列表中。除此之外,还需要为Excel安装PyXLL插件。 该函数的所有参数都是可选的,因为它们都具有默认值,但是如果我们需要也可以自己设置对决策树模型的输入。 使用模型进行预测 在使用模型之前,我们只需要再设定一个函数,用于传递输入和获取预测结果。我们使用和之前示例相同的代码,然后再加上@xl_func装饰器。模型返回预测的分类结果对应的整数,“_zoo_classifications”字典为这些整数提供了更易读的名称。 此函数接受“ml_get_zoo_tree”函数返回的决策树对象以及作为字典传递给Python函数的键值对列表。它将构造决策树时使用的特征名称与输入的特征名称相匹配,以便在调用“tree.predict”时它们能相互对应。 我们的决策树模型是一个非常简单的例子,用最少的数据对其进行了训练。适用于您的业务的任何类型的复杂模型都可以参考该方法进行构建。通过Python,您可以研发和训练模型,以提供有价值的见解,并根据实际数据进行快速预测。然后,您可以将这些模型交付给Excel用户,而无需他们在高级统计中拥有任何编程经验或专业知识。甚至可以构建工具来实现完全在Excel中开发和训练模型(例如,使用TensorFlow构建图),如果您愿意的话! 福利:让模型更有趣 当然,可能每个人都喜欢黑白电子数据表,但有时候我喜欢在里面添加一点东西来使电子表格更具吸引力 PyXLL允许我们使用“xl_app”函数访问Excel对象模型(Excel Object Model)。Excel对象模型与您在VBA中使用的完全相同。下面这个函数可以在工作表中创建图像对象,并加载描绘预测分类结果的图像。每次预测结果变化时,从“ml_zoo_predict”调用此函数都会更新Excel中的图片。因为此函数会更新Excel,我们需要在Excel完成计算后调用它。pyxll中的“async_call”函数正是这样做的。这是更新后的“ml_zoo_predict”函数:每当预测结果发生变化时,电子表格中的图像都会同步更新。 本文资源列表 本文源码:https://github.com/pyxll/pyxll-examples/tree/master/machine-learning PyXLL:https://www.pyxll.com UCI动物园数据集:https://archive.ics.uci.edu/ml/datasets/zoo 什么是决策树:https://www.python-course.eu/Decision_Trees.php

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
      友情链接