当前位置: 首页 > news >正文

天津网站开发平台溧阳免费做网站

天津网站开发平台,溧阳免费做网站,wordpress和wamp,长沙cms建站模板基于树的学习算法在数据科学竞赛中相当常见。这些算法给预测模型赋予了准确性、稳定性以及易解释性。其中#xff0c;决策树算法也是引人关注的「随机森林」算法的基础构造模块。本文介绍了决策树的概念和简单实现#xff0c;使用生动的示例帮助理解#xff0c;希望能够对你… 基于树的学习算法在数据科学竞赛中相当常见。这些算法给预测模型赋予了准确性、稳定性以及易解释性。其中决策树算法也是引人关注的「随机森林」算法的基础构造模块。本文介绍了决策树的概念和简单实现使用生动的示例帮助理解希望能够对你有所帮助。从 Kaggle 到课堂机器学习第一课就是决策树。之所以关注决策树是因为与其他 ML 方法相比决策树的数学复杂度不高同时能为分类问题提供足够的精度。对于 ML 的入门者来说决策树很容易上手。本教程将介绍决策树是什么如何构建决策树使用 Python 构建决策树决策树是什么我们跳过正式定义从概念上了解一下决策树。试想你坐在办公室里感觉自己饿了想出去吃点东西但是午餐要下午 1 点才开始。那么你怎么办呢当然你会看一下时间然后决定能否出去。你可以按照以下逻辑进行思考我们刚刚搭了一个决策树这是一个简单的版本但我们可以通过加入天气、成本等因素构建一个更为复杂的决策树。如果你想和你的朋友 Jon Snow 去一家中餐馆吃午饭决策逻辑可以这样表示这也是一个决策树。从顶部开始循着描述当前状况的路线一路向下直到做出决定。注意事项我们把场景切换到计算机世界。我们刚刚画的每一个框叫做一个节点。最上面的节点叫做根节点下面每层的节点叫做叶节点可以把它想成现实世界中的一棵树但是根朝上。每个节点测试我们的世界数据集中的某个属性从节点引出的每个分支对应于该属性的值。给定一棵决策树决策过程如下从根节点开始观察根节点属性的值按照与观察值对应的路径往下走重复以上步骤直至到达叶节点这样就能做出决策如何构建决策树构建决策树不需要从头开始除非你是一个像我一样的学生。尽管如此这也是一个很好的学习经验你将学到一些有趣的概念。构建决策树最常用的算法是 ID3该算法非常简单。以下是算法伪代码ID3 (Examples, Target_Attribute, Attributes)    Create a root node for the tree    If all examples are positive, Return the single-node tree Root, with label .    If all examples are negative, Return the single-node tree Root, with label -.    If Atributes list is empty, then Return the single node tree Root,    with label most common value of the target attribute in the examples.    Otherwise Begin        A ← The Attribute that best classifies examples.        Decision Tree attribute for Root A.        For each possible value, vi, of A,            Add a new tree branch below Root, corresponding to the test A vi.            Let Examples(vi) be the subset of examples that have the value vi for A            If Examples(vi) is empty                Then below this new branch add a leaf node with label most common target value in the examples            Else below this new branch add the subtree ID3 (Examples(vi), Target_Attribute, Attributes – {A})    End    Return Root你将注意到这样一个细节在循环开始之后算法必须选择一个属性为样本分类选出最佳方案。那么算法会怎么做呢为了理解这一点我们必须深入了解一些数学知识。别担心不会太难。信息增益和熵信息增益是选择最佳属性常用且容易上手的方法之一。它使用另一种叫做熵的属性计算出来。熵是物理学和数学中的概念指系统的随机性或混乱度。在信息论中它指的是一组样本的混乱度。我们通过一个例子来说明你有两个装满巧克力的袋子。巧克力有红的也有蓝的。你想通过计算巧克力的数量来测量袋子的熵。所以你坐下来开始数。2 分钟后你发现第一袋有 50 块巧克力。其中 25 块是红色的25 块是蓝色的。第二袋也有 50 块巧克力都是蓝色的。在这种情况下第一个袋子的熵是 1因为里面的巧克力呈均匀分布。第二个袋子的熵为零因为里面的巧克力没有随机性。我们用下面这个公式计算一个系统的熵在这个公式中c 代表类别或属性的总数p_i 代表属于第 i 类的样本数量。是不是有点懵我们通过例子了解一下让我们回到刚刚的巧克力袋子。我们有两个类别红色R和蓝色B。第一个袋子里有 25 块红色巧克力。巧克力总数是 50。因此p_i25/50。蓝色类别也是这样处理。把这些值代入熵方程我们得到以下结果解方程结果如下如果想验证结果或尝试其他例子请移步 Wolfram Alphahttp://www.wolframalpha.com/input/?i-(25%2F50)log2(25%2F50)-(25%2F50)log2(25%2F50)。继续计算第二个袋子的熵里面有 50 块红色巧克力0 块蓝色巧克力。得到的熵是 0。如果你理解这个概念太好了我们现在转到信息增益。信息增益信息增益是由基于给定属性的样本分割导致的熵下降。从数学角度上看信息增益的定义为S 代表整个样本集A 代表我们想要分割的属性。|S| 代表样本数量|Sv| 表示属性 A 当前值的样本数量。仍然很复杂是不是那我们举个例子看看它的工作流程。构建决策树首先给巧克力的例子添加一些细节。我们已经知道袋 1 中有 25 块红色巧克力、25 块蓝色巧克力。现在我们还要考虑巧克力的品牌。红色巧克力中有 15 块是士力架10 块是 Kit Kat 牌。蓝色巧克力中20 块是 Kit Kat 牌5 块是士力架。假设我们只想吃红色的士力架。那么这里红色士力架15是正例其他的巧克力如红色 Kit Kat 和蓝色士力架都是负例。现在与我们的类别吃不吃相关的数据集的熵是现在我们来回顾一下我们有 50 块巧克力。如果只看属性「颜色」则我们有 25 个红色的、25 个蓝色的。如果看属性「品牌」则我们有 20 块士力架、30 块 Kit Kat 巧克力。为了构建决策树我们需要选择其中一个属性作为根节点。我们想要选择具备最高信息增益的属性。现在我们来计算这些属性的信息增益。颜色相关的信息增益是我们刚才计算了与类别相关的巧克力的熵是 0.8812。如果我们想吃 15 块士力架而不是 10 块 Kit Kat则红色巧克力的熵是如果我们不想吃蓝色巧克力则熵为 0。我们的信息增益计算就变成了如果我们分割颜色则信息增益是 0.3958。现在我们来看下品牌。如果我们想吃 15 块士力架共有 20 块不想吃 Kit Kat。则士力架的熵是如果我们不吃 Kit Kat则熵为 0。信息增益为品牌分割的信息增益是 0.5567。由于品牌的信息增益较大我们将基于品牌进行分割。下一级我们只要左边的颜色。我们可以轻松地根据颜色进行分割无需进行任何计算。决策树如下谁能想到吃块巧克力这么难呢现在你应该了解决策树的运行原理了。使用 Python 3 实现决策树现在我们继续为巧克力数据集构建决策树。代码和数据地址https://github.com/ishansharma/decision_trees_tutorial/创建新文件夹。从 GitHub 下载 data.csvhttps://github.com/ishansharma/decision_trees_tutorial/blob/master/data.csv。你可能需要安装 Scipy、Scikit-Learn 和 Pandas如果没有安装的话。我推荐使用虚拟环境参见http://docs.python-guide.org/en/latest/dev/virtualenvs/。从终端运行以下命令行安装 Pandas 和 Scikit-Learnpip install scikit-learnpip install scipypip install pandas4. 安装后创建新文件 decision_tree.py并将以下两行添加进去from pandas import read_csvfrom sklearn import tree5. 使用 Pandas 加载数据data read_csv(data.csv)6. Pandas 可以处理大型数据集且具备大量可视化功能。它在使用 Python 的大数据流程中广泛使用因此使用 Pandas 是个好主意。在 Pandas 中你可以使用 head() 方法快速查看加载数据print(data.head())下图显示了数据的前 5 行。7. 我使用 Class 列来确定我们是否想吃巧克力。1 代表吃0 代表不吃。8. 接下来我们需要对数据执行一些预处理。Scikit-Learn 默认不支持文本标签因此我们使用 Pandas 将文本标签转换成数字。只需要添加以下两行data[Color] data[Color].map({Red: 0, Blue: 1})data[Brand] data[Brand].map({Snickers: 0, Kit Kat: 1})9. 刚才我们改变了 Color 属性用 0 代表红色1 代表蓝色。类似地在 Brand 列中我们用 0 替代士力架用 1 替换 Kit Kat。10. 如果你使用 head() 查看数据集你将看到品牌和颜色的值已经变成了整数11. 最后按惯例用 X 表示训练属性Y 表示输出类别因此我们执行以下命令predictors [Color, Brand]X data[predictors]Y data.Class12. 差不多完成了。我们现在已经准备好训练决策树了。添加以下两行在我们的数据上训练决策树decisionTreeClassifier tree.DecisionTreeClassifier(criterionentropy)dTree decisionTreeClassifier.fit(X, Y)13. 完成了吗我们对决策树进行快速可视化。添加下列行并运行程序dotData tree.export_graphviz(dTree, out_fileNone)print(dotData)14. 输出如下15. 复制输出访问 WebGraphviz (http://www.webgraphviz.com/) 并粘贴输出点击 Generate Graph。你讲看到一个与上文决策树类似的决策树16. 这颗树有点难懂因为有很多额外信息不过你可以看到它先基于列 1Brand进行分割再基于列 2Color进行分割。一旦构建处这颗树那么未来的预测就很简单了。我们来看一下我们是否想吃蓝色的 Kit Kat 巧克力。将以下行添加至 decision_tree.py 文件的末尾print(dTree.predict([[1, 1]]))输出为 [0]意味着分类是不吃。如果你尝试红色士力架print(dTree.predict([[0, 0]]))则输出是 [1]。继续研究经过以上学习你应该对决策树有所了解同时学会了简单的实现。如果希望进一步探索你可以参考这些资源Scikit-Learn 上的决策树页面讨论在更大的数据集和其他度量下分割数据http://scikit-learn.org/stable/modules/tree.htmlKaggle 上的机器学习教程一个深度教程教你参与 Kaggle 竞赛并构建一个住房数据的决策树模型https://www.kaggle.com/learn/machine-learningSaving your Scikit Models本教程中每次运行都会训练一遍模型。这在小数据集中还可以接受但对于更大的数据集来说最好是一次训练随后仅使用。这个教程可以教你如何保存自己的模型http://scikit-learn.org/stable/modules/model_persistence.html将训练好的模型转换为 Core ML如果你为另一个数据集训练了自己的决策树并希望在 iOS 设备上运行那么你就需要将已训练模型转换为 Core ML 框架版本https://developer.apple.com/documentation/coreml/converting_trained_models_to_core_ml 原文链接https://heartbeat.fritz.ai/introduction-to-decision-tree-learning-cd604f85e236作者Ishan Sharma编译机器之心文章版权归原作者所有转载仅供学习使用不用于任何商业用途如有侵权请留言联系删除感谢合作。
http://www.zqtcl.cn/news/709297/

相关文章:

  • qq音乐怎么做mp3下载网站发卡网站建设方案
  • 做cpc不做网站可以吗网站跳出率
  • 公司网站变更域名有了域名就可以做网站了吗
  • 网站建设推广营销策划做外贸网站需要注册公司吗
  • 可信赖的赣州网站建设做羽毛球网站
  • 如何找网站做推广wordpress登录及注册
  • 韩国美容网站 模板wordpress中英文
  • 为什么邮箱突然进不去了总提示正在进入不安全网站wordpress需注册访问
  • 建网站哪家最好山东泰安房价
  • wordpress4.9+多站点网络推广公司联系昔年下拉
  • 西安seo网站关键词优化罗田县建设局网站
  • 北京网站建设 shwllnmp新手 wordpress
  • 优化网站结构一般包括如何进行网络营销风险控制
  • 怎样查看网站是用什么做的郫都区规划建设局网站
  • 新乡营销型网站建设制作网站设计的总结
  • 做网站的免费空间微信crm管理系统
  • 网站开发方向 英语翻译护肤品网页设计图片
  • 南昌做兼职的网站佛山网站建设公司排名
  • 购物网站建设推进表国外设计素材网站
  • 广州网站建设推广公司有哪些有一个网站专门做民宿
  • 安徽省建设干部网站淘客网站超级搜怎么做
  • 网站地图提交地址网站地图可以自己做么
  • 电子商务网站建设与推广wordpress手机大标题
  • 网站页面上的下载功能怎么做ps扩展插件网站
  • 打开网站出现directory今天时政新闻热点是什么
  • 高校校园网站建设与运行网站规划教学设计
  • 包头手机网站制作seo推广手段
  • 汕头网站推广seo品牌网站建设 app建设
  • 网站后台word编辑器如何申请一个网站 做视频
  • 源代码做网站网站编辑可以做运营吗