开源神器,无需一行代码就能搞定机器学习,不会数学也能上手

姓名:郭金    学号:17101223407

转载自:http://mp.weixin.qq.com/s/MY-cQ0J37sjZaWiQQ4xs4w

【嵌牛导读】:本文我们将介绍一个基于GUI的工具:KNIME。读完本文,你将在无需编写任何代码的情况下,预测零售商店的销售情况。

【嵌牛鼻子】:机器学习、KNIME

【嵌牛提问】: KNIME是一个非常强大的开源工具,但是它也有自己的局限性是?

【嵌牛正文】:

对于机器学习和数据科学的初学者来说,最大的挑战之一是需要同时学习太多知识,特别是如果你不知道如何编码。你需要快速地适应线性代数、统计以及其他数学概念,并学习如何编码它们,对于新用户来说,这可能会有点难以承受。

如果你没有编码的背景并且发现很难学习下去,这时你可以用一个GUI驱动的工具来学习数据科学。当你刚开始学习的时候,可以集中精力学习实际的项目。一旦适应了基本的概念,你就可以在以后慢慢学习如何编写代码。

为什么是KNIME ?

KNIME是一个基于GUI工作流的强大分析平台。这意味着你不必知道如何编写代码(对于像我这样的初学者来说是一种解脱),就能够使用KNIME并获得洞察力。

你可以执行从基本I/O到数据操作、转换和数据挖掘等功能。它将整个过程的所有功能合并到一个工作流中。

设置系统

在开始KNIME之前,首先你需要安装它并在PC上设置它。

到KNIME下载页面(http://www.knime.com/downloads)。

图片发自简书App

为你的电脑确定正确的版本:

图片发自简书App

安装该平台,并为KNIME设置工作目录以存储其文件:

图片发自简书App

这就是你屏幕上显示的样子。

创建你的第一个工作流程

在我们深入研究KNIME的工作原理之前,让我们先定义几个关键术语来帮助我们理解,然后看看如何在KNIME中打开一个新项目。

节点:节点是任何数据操作的基本处理点。它可以根据你在工作流程中选择的内容来执行一些操作。

工作流:工作流是指你在平台上完成特定任务的步骤或操作的顺序。

在左上角的工作流指导会向你展示KNIME社区特定节点的使用百分比。节点存储库将显示特定工作流可以拥有的所有节点,这取决于你的需要。当创建第一个工作流时,你还可以浏览示例工作流来检查更多的工作流。这是迈向解决任何问题的第一步。

要建立一个工作流,可以遵循这些步骤。

进入文件菜单,点击新建:

图片发自简书App

在你的平台上创建一个新的KNIME工作流并命名它为Introduction。

图片发自简书App

现在,当点击Finish时,你应该已经成功创建了你的第一个KNIME工作流。

图片发自简书App

这是你在KNIME上的空白工作流程。现在,你就可以从存储库将任何节点拖放到工作流中来探索和解决任何问题。

KNIME介绍

KNIME是一个可以帮助解决我们在数据科学的边界上可能遇到任何问题的平台。从最基本的可视化或线性回归到高级深度学习,KNIME可以做到这一切。

作为一个示例用例,我们在本教程中要解决的问题是Datahack可以访问的BigMart销售问题(https://datahack.analyticsvidhya.com/contest/practice-problem-big-mart-sales-iii/)。

这个问题具体描述如下:

BigMart的数据科学家已经收集了2013年不同城市10家商店1559种产品的销售数据。此外,还定义了每个产品和存储的某些属性。其目的是建立一个预测模型,并在特定的商店中找出每种产品的销售情况。使用这个模型,BigMart 将尝试了解产品和商店的属性,这些属性在增加销售中扮演着关键的角色。

你可以在这里(https://www.analyticsvidhya.com/blog/2016/02/bigmart-sales-solution-top-20/)找到BigMart销售问题的方法和解决方案。

导入数据文件

让我们从理解这个问题的第一(但非常重要)步骤开始:导入我们的数据。

图片发自简书App

拖放文件阅读器节点到工作流并双击它。接下来,浏览需要导入到工作流中的文件。

在本文中,我们将学习如何解决BigMart销售的问题,我将从BigMart Sales导入训练数据集:

图片发自简书App

这就是导入数据集时预览的样子。

让我们可视化一些相关的列,并找出它们之间的相关性。相关性帮助我们发现哪些列可能是相互关联的,并具有更高的预测能力来帮助我们最终的结果。要了解更多相关信息,请阅读本文(https://www.analyticsvidhya.com/blog/2015/06/correlation-common-questions/)。

为了创建一个correlation matrix矩阵,我们在节点存储库中键入“linear correlation”,然后将其拖放到我们的工作流中。

图片发自简书App

在我们拖放之后,我们将把文件阅读器File reader的输出连接到节点linear correlation的输入。

单击topmost面板上的绿色按钮Execute。然后右击相关节点并选择View:Correlation Matrix 生成下图。

图片发自简书App

这将帮助你选择重要的特性,并通过在特定的单元上悬停来更好地预测。

接下来,我们将可视化数据集的范围和模式来更好地理解它。

可视化和分析

其实,我们想要从数据中了解到的主要事情之一就是:什么东西被卖得最多。

有两种解释信息的方法:散点图(Scatter Plot )和饼图(pie chart)。

散点图

图片发自简书App

在我们的节点存储库中搜索Views 项下的Scatter Plot 。将其以类似的方式拖放到工作流中,并将文件阅读器的输出连接到此节点。

接下来,配置节点,选择你需要多少行数据,并希望可视化(我选择了3000)。

单击Execute,然后查看:散点图。

图片发自简书App

X轴为Item_Type,Y轴为Item_Outlet_Sales。

上面的图代表了每种商品的销售情况,并向我们展示了水果和蔬菜的销售量是最高的。

饼状图

图片发自简书App

要了解我们数据库中所有产品类型的平均销售估算,我们将使用一个饼图。

单击视图下的饼图节点并将其连接到你的文件阅读器。选择需要隔离的列并选择首选的聚合方法,然后应用。

这张图表向我们展示了销售在各种产品上的平均分配。“淀粉类食品”的平均销量为7.7%。

以上,我只使用了两种类型的视图,尽管你还可以在浏览Views选项卡下查看多种表单中的数据。比如可以使用直方图、行图等来更好地可视化你的数据。

我喜欢像Tableau这样的工具,它是实现数据可视化的最有力工具(https://www.analyticsvidhya.com/blog/2017/07/data-visualisation-made-easy/)。

如何清洗数据?

在训练模型之前,你可以进行的一项内容就是数据清理和特性提取(https://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/)。这里,我将提供一个关于KNIME数据清理步骤的概述。

寻找Missing Values

在估算值之前,我们需要知道哪些是缺失的。

再次访问节点存储库,找到Missing Values节点。拖放它,并将我们的文件阅读器File reader 的输出连接到节点。

图片发自简书App

Imputations

要imputed values ,请选择Missing value并单击Configure。根据所要数据的类型,选择你想要的数据,并点击Apply。

图片发自简书App

现在,当我们执行它时,在Missing value节点的输出端口上已经准备好了具有imputed values的完整数据集。在我的分析中,我选择了imputation 方法为:

String:

Next value

Previous value

Custom value

Remove row

Number (double and integer):

Mean

Median

Previous value

Next value

Custom value

Linear interpolation

Moving average

训练你的第一个模型

让我们来看看如何在KNIME中构建机器学习模型。

实现一个线性模型Linear Model

首先,我们将训练一个线性模型Linear Model,它包含了数据集的所有特性,以了解如何选择特性并构建模型。这是一个初学者的线性回归指南(https://www.analyticsvidhya.com/blog/2017/06/a-comprehensive-guide-for-linear-ridge-and-lasso-regression/)。

进入你的节点存储库,并将Linear Regression Learner拖到工作流中。然后将收集的干净数据连接到 Missing value 节点的输出端口。

图片发自简书App

这是你现在的屏幕呈现。在Configuration选项卡中,排除Item_Identifier并在顶部选择目标变量。完成这个任务之后,需要导入testdata来运行模型。

将另一个文件阅读器拖放到工作流中,并从你的系统中选择测试数据。

图片发自简书App

正如我们所看到的,测试数据也包含缺失值。我们将以与训练数据相同的方式在Missing value节点上运行它。

在我们清洗了测试数据之后,将引入一个新的节点:Regression predictor。

图片发自简书App

通过将learner的输出与预测器的输入连接起来,将你的模型加载到预测器中。在预测器的第二个输入中,加载你的测试数据。预测器会根据你的learner自动调整预测栏,但也可以手动改变它。

KNIME有能力在分析标签下训练一些非常专业的模型。这里是一个列表:

Clustering

Neural networks

Ensemble learners

Naïve Bayes

提交你的解决方案

在执行预测器之后,输出几乎已经准备好提交了。

在节点存储库中找到节点列过滤器Column filter,并将其拖到工作流中。将预测器的输出连接到列筛选器,并配置它筛选所需的列。在这种情况下,你需要Item_Identifier、Outlet_Identifier和Outlet_Sales的预测。

图片发自简书App

执行列过滤器Column filter,最后,搜索节点CSV writer并将你的预测记录在硬盘上。

图片发自简书App

调整路径,将其设置为需要存储的CSV文件,并执行该节点。最后,打开CSV文件以按照我们的解决方案来纠正列名。将CSV文件压缩成ZIP文件并提交你的解决方案!

图片发自简书App

这是最终的工作流图。

在可移植性方面,KNIME工作流非常方便。它们可以发送给你的朋友或同事一起构建,增加你产品的功能!

为了导出一个KNIME工作流,可以简单地单击File > Export KNIME Workflow.

图片发自简书App

在此之后,选择您需要导出的合适的工作流,然后单击Finish。

图片发自简书App

这会创建一个.knwf文件,你可以发送给任何人,他们将能够使用一键访问它!

限制

KNIME是一个非常强大的开源工具,但是它也有自己的局限性。主要是:

可视化并不像其他一些开源软件(比如RStudio)那样简洁优雅。

版本更新不受支持;你将不得不重新安装软件(也就是说,从版本2更新到版本3,你将需要重新安装)。

贡献社区不像Python或CRAN社区那么大,因此新的功能需要很长时间才能添加到KNIME中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 202,529评论 5 475
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,015评论 2 379
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,409评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,385评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,387评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,466评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,880评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,528评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,727评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,528评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,602评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,302评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,873评论 3 306
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,890评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,132评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,777评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,310评论 2 342

推荐阅读更多精彩内容