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

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

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

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

好吧,让我们开始吧!

为什么是KNIME ?

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

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

设置系统

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

到KNIME下载页面。

这里写图片描述

为你的电脑确定正确的版本:
这里写图片描述
安装该平台,并为KNIME设置工作目录以存储其文件:
这里写图片描述
这就是你屏幕上显示的样子。

创建你的第一个工作流程

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

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

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

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

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

进入文件菜单,点击新建:
这里写图片描述

在你的平台上创建一个新的KNIME工作流并命名它为Introduction。
这里写图片描述
现在,当点击Finish时,你应该已经成功创建了你的第一个KNIME工作流。
这里写图片描述

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

KNIME介绍

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

作为一个示例用例,我们在本教程中要解决的问题是Datahack可以访问的BigMart销售问题。

这个问题具体描述如下:

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

你可以在这里找到BigMart销售问题的方法和解决方案。

导入数据文件

让我们从理解这个问题的第一(但非常重要)步骤开始:导入我们的数据。
这里写图片描述
拖放文件阅读器节点到工作流并双击它。接下来,浏览需要导入到工作流中的文件。

在本文中,我们将学习如何解决BigMart销售的问题,我将从BigMart Sales导入训练数据集:
这里写图片描述
这就是导入数据集时预览的样子。

让我们可视化一些相关的列,并找出它们之间的相关性。相关性帮助我们发现哪些列可能是相互关联的,并具有更高的预测能力来帮助我们最终的结果。要了解更多相关信息,请阅读本文。

为了创建一个correlation matrix矩阵,我们在节点存储库中键入“linear correlation”,然后将其拖放到我们的工作流中。
这里写图片描述
在我们拖放之后,我们将把文件阅读器File reader的输出连接到节点linear correlation的输入。

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

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

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

可视化和分析

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

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

散点图

这里写图片描述

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

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

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

这里写图片描述

X轴为Item_Type,Y轴为Item_Outlet_Sales。

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

饼状图

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

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

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

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

我喜欢像Tableau这样的工具,它是实现数据可视化的最有力工具。

如何清洗数据?

在训练模型之前,你可以进行的一项内容就是数据清理和特性提取。这里,我将提供一个关于KNIME数据清理步骤的概述。

寻找Missing Values

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

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

这里写图片描述

Imputations

要imputed values ,请选择Missing value并单击Configure。根据所要数据的类型,选择你想要的数据,并点击Apply。
这里写图片描述

现在,当我们执行它时,在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
,它包含了数据集的所有特性,以了解如何选择特性并构建模型。这是一个初学者的线性回归指南。

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

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

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

这里写图片描述

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

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

这里写图片描述

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

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

Clustering
Neural networks
Ensemble learners
Naïve Bayes

提交你的解决方案

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

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

这里写图片描述

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

这里写图片描述

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

这里写图片描述

这是最终的工作流图。

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

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

这里写图片描述

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

这里写图片描述

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

限制

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

- 可视化并不像其他一些开源软件(比如RStudio)那样简洁优雅。
- 版本更新不受支持;你将不得不重新安装软件(也就是说,从版本2更新到版本3,你将需要重新安装)。
- 贡献社区不像Python或CRAN社区那么大,因此新的功能需要很长时间才能添加到KNIME中。

原文链接:Building Your First Machine Learning Model Using KNIME(责编/魏伟)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/525777.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

linux twm,linux 命令缩写解析

linux有非常多的命令,如果可以知道它是什么的缩写,一定非常方便我们的记忆。下面转载一下这方面的知识。bin BINaries/dev DEVices/etc ETCetera/lib LIBrary/proc PROCesses/sbin Superuser BINaries/tmp TeMPorary/usr Unix Shared Resources/…

OpenStack不行了吗?悉尼峰会,OpenStack的白城反击战?

作者:李开,九州云99Cloud联合创始人&副总裁。 11月悉尼的春天忽然变得阴冷潮湿,和第一天抵达时候的风和日丽大相径庭,海风推动着飘忽的乌云,有点电影《魔戒》里黑暗军团压境的味道。 由于早上不小心睡过了头&…

档案盒正面标签制作_错题本科学制作方法、正确使用方式及窍门

错题本的作用不用多说,重点是如何制作错题本以及正确使用方法。小编整理了以下制作错图集的正确步骤,希望对大家有用。一、制作错题本的简单步骤步骤1:把所有的练习册和试卷找出来;分学科按学期顺序整理;以学年或学期为单位装订在一起&#x…

android触摸效果,Android UI实现单行文本水平触摸滑动效果

本文实例为大家分享了单行文本水平触摸滑动效果,通过EditText实现TextView单行长文本水平滑动效果。下一篇再为大家介绍 多行文本折叠展开效果,自定义布局View实现多行文本折叠和展开。1.初衷最近做应用的时候有用到TextView单行长文本,当文本…

机器人爱因斯坦、索菲亚对话人类:“人类必须自我修复”

人工智能的发展速度真的太快了,就在不久前机器人“索菲亚”获得沙特阿拉伯获得了公民身份之后,机器人版的爱因斯坦教授也登上了历史的舞台。 机器人版的爱因斯坦教授是由汉森机器人(Hanson Robotics)公司制造的,这家机器人制造商制造的另外一…

hook控制浏览器的方法_Java-Hook技术-入门实践+反射、动态代理、热修复再看看

延续之前的MonkeyLei:Android-模块化、组件化、插件化、热修复-插件化-起个头,我们复习下里面的关于反射和动态代理点的知识。然后尝试简单了解下Hook...看之前文章,记得多复习下反射代理,比如使用这些....:public cla…

1._请写出5种以上的android中界面常用布局方式,跳槽季“充电宝”Android面试题(一)...

1.请介绍下Android中常用的5种布局Android中常用的5种布局分别为:FrameLaout(框架布局)、LinearLayout(线性布局)、AbsoluteLayout(绝对布局)、RelativeLayout(相对布局)、TableLayout(表格布局)。框架布局 :也叫帧布局,是将放入其中的元素都…

git 拉取远端仓库_git命令-远程仓库拉取、本地仓库更新、工作空间提交等等

一,新建代码库1,在当前目录下新建一个git代码库$ git init2,新建一个目录将其初始化为git代码库$ git init [project-name]3,git clone 远程代码库$ git clone [url]二,配置1,Git的设置文件为.gitconfig&am…

c语言二维数组对每一列排序,二维数组对每一行进行排序。。

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼这是我的代码、、问题出在换行的时候sum[i][j]的值还保存着上一行的值、、#include "stdafx.h"#include"stdio.h"int main(){int sum[3][4]{{2,3,4,5},{4,3,2,5},{1,3,5,9}};for(int i0;i<3;i){for(int j0;…

vscode 头文件包含问题_使用clangd替代c/c++配置vscode c++项目

背景&#xff1a;最近从Clion切换到了vscode来进行代码开发&#xff0c;发现vscode自带的c/c插件除了能够使用debug功能&#xff0c;其余代码补全&#xff0c;跳转等功能都和基于clangd的clion有较大差距&#xff0c;经常出现匹配不上或者跳转不准确的问题&#xff0c;在这背景…

微服务拆分需要考虑的必要因素与坚持原则

前言&#xff1a;创业公司往往因为有限的时间和投入&#xff0c;把系统所有的功能都聚集在一起。随着业务的不断发展&#xff0c;技术人员开始不断地对架构进行解耦和拆分。微服务在最近几年大行其道&#xff0c;很多公司的研发人员都在考虑微服务架构&#xff0c;或者在做微服…

android如何建立全局变量,如何在Android中声明全局变量?

我正在创建一个需要登录的应用程序。 我创建了主要和登录活动。在主要活动onCreate方法中我添加了以下条件&#xff1a;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);...loadSettings();if(strSession…

data后缀文件解码_Java语法进阶13-文件、IO流

FileFile是文件和目录路径名的抽象表示形式&#xff0c;即File类是文件或目录的路径&#xff0c;而不是文件本身&#xff0c;因此File类不能直接访问文件内容本身&#xff0c;如果需要访问文件内容本身&#xff0c;则需要使用输入/输出流。File类的对象用来表示文件和文件夹的对…

中小型互联网公司微服务实践-经验和教训

上次写了一篇文章叫Spring Cloud在国内中小型公司能用起来吗?介绍了Spring Cloud是否能在中小公司使用起来&#xff0c;这篇文章是它的姊妹篇。其实我们在这条路上已经走了一年多&#xff0c;从16年初到现在。在使用Spring Cloud之前我们对微服务实践是没有太多的体会和经验的…

android图片适配到裁剪框,Android图片剪裁-调用系统实现,完美适配魅族等机型

System-Photo-CropperAndroid System Photo Cropper 使用系统原生的图片剪裁库&#xff0c;完美适配魅族等机型Step 1First you need a sysPhotoCropper to handle the activity results of cropping photos.Overrideprotected void onActivityResult(int requestCode, int res…

php程序里的configini_程序员手册 修改php.ini的几种方法

修改php.ini配置文件的几个函数先做一下介绍:php中修改php配置文件(php.ini)的函数主要有四个函数&#xff1a;ini_get、ini_set、ini_get_all、ini_restore。其中ini_set和ini_get比较常用,下面分别做介绍。(1)ini_get()用来获取配置文件的选项值.这个函数很多人都使过&#x…

对于机器学习,到底该选择哪种编程语言

开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢&#xff1f;这是一个非常重要的问题。我们在许多论坛上都有讨论过。现在&#xff0c;我可以提供我自己的答案并解释原因&#xff0c;但我们先看一些数据。毕竟&#xff0c;这是机器学习者和数据科学家应该…

android如何适配平板,适用于平板电脑、大屏设备和可折叠设备的自适应布局

将应用支持扩展到更大屏幕的设备(例如平板电脑、可折叠设备和 Chrome 操作系统设备)是扩大您的覆盖面和互动度的绝佳方式。平板电脑的增长率比去年同期 (YOY) 大幅增长了 30%&#xff0c;Chrome 操作系统设备比去年同期增长了 92%。我们还发现&#xff0c;用户使用平板电脑的时…

string修饰的梦修改吗_知识点!!!NSString用copy和strong修饰的区别

废话不多说直接上例子。结果在下边&#xff01;&#xff01;&#xff01;&#xff01;&#xff01;用strong修饰&#xff1a;interface ViewController ()property(nonatomic,strong)NSString *str1;endimplementation ViewController- (void)viewDidLoad {[super viewDidLoad]…

对于机器学习,到底该选择哪种编程语言?

开发者到底应该学习哪种编程语言才能获得机器学习或数据科学这类工作呢&#xff1f;这是一个非常重要的问题。我们在许多论坛上都讨论过这个问题。今天&#xff0c;我将给出我自己的答案并解释其中原因&#xff0c;但我们首先看一些数据。毕竟&#xff0c;这是机器学习者和数据…