開源神器,無需一行代碼就能搞定機(jī)器學(xué)習(xí),不會(huì)數(shù)學(xué)也能上手

姓名:郭金? ? 學(xué)號(hào):17101223407

轉(zhuǎn)載自:http://mp.weixin.qq.com/s/MY-cQ0J37sjZaWiQQ4xs4w

【嵌牛導(dǎo)讀】:本文我們將介紹一個(gè)基于GUI的工具:KNIME。讀完本文,你將在無需編寫任何代碼的情況下,預(yù)測零售商店的銷售情況。

【嵌牛鼻子】:機(jī)器學(xué)習(xí)、KNIME

【嵌牛提問】: KNIME是一個(gè)非常強(qiáng)大的開源工具,但是它也有自己的局限性是?

【嵌牛正文】:

對于機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的初學(xué)者來說,最大的挑戰(zhàn)之一是需要同時(shí)學(xué)習(xí)太多知識(shí),特別是如果你不知道如何編碼。你需要快速地適應(yīng)線性代數(shù)、統(tǒng)計(jì)以及其他數(shù)學(xué)概念,并學(xué)習(xí)如何編碼它們,對于新用戶來說,這可能會(huì)有點(diǎn)難以承受。

如果你沒有編碼的背景并且發(fā)現(xiàn)很難學(xué)習(xí)下去,這時(shí)你可以用一個(gè)GUI驅(qū)動(dòng)的工具來學(xué)習(xí)數(shù)據(jù)科學(xué)。當(dāng)你剛開始學(xué)習(xí)的時(shí)候,可以集中精力學(xué)習(xí)實(shí)際的項(xiàng)目。一旦適應(yīng)了基本的概念,你就可以在以后慢慢學(xué)習(xí)如何編寫代碼。

為什么是KNIME ?

KNIME是一個(gè)基于GUI工作流的強(qiáng)大分析平臺(tái)。這意味著你不必知道如何編寫代碼(對于像我這樣的初學(xué)者來說是一種解脫),就能夠使用KNIME并獲得洞察力。

你可以執(zhí)行從基本I/O到數(shù)據(jù)操作、轉(zhuǎn)換和數(shù)據(jù)挖掘等功能。它將整個(gè)過程的所有功能合并到一個(gè)工作流中。

設(shè)置系統(tǒng)

在開始KNIME之前,首先你需要安裝它并在PC上設(shè)置它。

到KNIME下載頁面(http://www.knime.com/downloads)。

圖片發(fā)自簡書App

為你的電腦確定正確的版本:

圖片發(fā)自簡書App

安裝該平臺(tái),并為KNIME設(shè)置工作目錄以存儲(chǔ)其文件:

圖片發(fā)自簡書App

這就是你屏幕上顯示的樣子。

創(chuàng)建你的第一個(gè)工作流程

在我們深入研究KNIME的工作原理之前,讓我們先定義幾個(gè)關(guān)鍵術(shù)語來幫助我們理解,然后看看如何在KNIME中打開一個(gè)新項(xiàng)目。

節(jié)點(diǎn):節(jié)點(diǎn)是任何數(shù)據(jù)操作的基本處理點(diǎn)。它可以根據(jù)你在工作流程中選擇的內(nèi)容來執(zhí)行一些操作。

工作流:工作流是指你在平臺(tái)上完成特定任務(wù)的步驟或操作的順序。

在左上角的工作流指導(dǎo)會(huì)向你展示KNIME社區(qū)特定節(jié)點(diǎn)的使用百分比。節(jié)點(diǎn)存儲(chǔ)庫將顯示特定工作流可以擁有的所有節(jié)點(diǎn),這取決于你的需要。當(dāng)創(chuàng)建第一個(gè)工作流時(shí),你還可以瀏覽示例工作流來檢查更多的工作流。這是邁向解決任何問題的第一步。

要建立一個(gè)工作流,可以遵循這些步驟。

進(jìn)入文件菜單,點(diǎn)擊新建:

圖片發(fā)自簡書App

在你的平臺(tái)上創(chuàng)建一個(gè)新的KNIME工作流并命名它為Introduction。

圖片發(fā)自簡書App

現(xiàn)在,當(dāng)點(diǎn)擊Finish時(shí),你應(yīng)該已經(jīng)成功創(chuàng)建了你的第一個(gè)KNIME工作流。

圖片發(fā)自簡書App

這是你在KNIME上的空白工作流程?,F(xiàn)在,你就可以從存儲(chǔ)庫將任何節(jié)點(diǎn)拖放到工作流中來探索和解決任何問題。

KNIME介紹

KNIME是一個(gè)可以幫助解決我們在數(shù)據(jù)科學(xué)的邊界上可能遇到任何問題的平臺(tái)。從最基本的可視化或線性回歸到高級(jí)深度學(xué)習(xí),KNIME可以做到這一切。

作為一個(gè)示例用例,我們在本教程中要解決的問題是Datahack可以訪問的BigMart銷售問題(https://datahack.analyticsvidhya.com/contest/practice-problem-big-mart-sales-iii/)。

這個(gè)問題具體描述如下:

BigMart的數(shù)據(jù)科學(xué)家已經(jīng)收集了2013年不同城市10家商店1559種產(chǎn)品的銷售數(shù)據(jù)。此外,還定義了每個(gè)產(chǎn)品和存儲(chǔ)的某些屬性。其目的是建立一個(gè)預(yù)測模型,并在特定的商店中找出每種產(chǎn)品的銷售情況。使用這個(gè)模型,BigMart 將嘗試了解產(chǎn)品和商店的屬性,這些屬性在增加銷售中扮演著關(guān)鍵的角色。

你可以在這里(https://www.analyticsvidhya.com/blog/2016/02/bigmart-sales-solution-top-20/)找到BigMart銷售問題的方法和解決方案。

導(dǎo)入數(shù)據(jù)文件

讓我們從理解這個(gè)問題的第一(但非常重要)步驟開始:導(dǎo)入我們的數(shù)據(jù)。

圖片發(fā)自簡書App

拖放文件閱讀器節(jié)點(diǎn)到工作流并雙擊它。接下來,瀏覽需要導(dǎo)入到工作流中的文件。

在本文中,我們將學(xué)習(xí)如何解決BigMart銷售的問題,我將從BigMart Sales導(dǎo)入訓(xùn)練數(shù)據(jù)集:

圖片發(fā)自簡書App

這就是導(dǎo)入數(shù)據(jù)集時(shí)預(yù)覽的樣子。

讓我們可視化一些相關(guān)的列,并找出它們之間的相關(guān)性。相關(guān)性幫助我們發(fā)現(xiàn)哪些列可能是相互關(guān)聯(lián)的,并具有更高的預(yù)測能力來幫助我們最終的結(jié)果。要了解更多相關(guān)信息,請閱讀本文(https://www.analyticsvidhya.com/blog/2015/06/correlation-common-questions/)。

為了創(chuàng)建一個(gè)correlation matrix矩陣,我們在節(jié)點(diǎn)存儲(chǔ)庫中鍵入“l(fā)inear correlation”,然后將其拖放到我們的工作流中。

圖片發(fā)自簡書App

在我們拖放之后,我們將把文件閱讀器File reader的輸出連接到節(jié)點(diǎn)linear correlation的輸入。

單擊topmost面板上的綠色按鈕Execute。然后右擊相關(guān)節(jié)點(diǎn)并選擇View:Correlation Matrix 生成下圖。

圖片發(fā)自簡書App

這將幫助你選擇重要的特性,并通過在特定的單元上懸停來更好地預(yù)測。

接下來,我們將可視化數(shù)據(jù)集的范圍和模式來更好地理解它。

可視化和分析

其實(shí),我們想要從數(shù)據(jù)中了解到的主要事情之一就是:什么東西被賣得最多。

有兩種解釋信息的方法:散點(diǎn)圖(Scatter Plot )和餅圖(pie chart)。

散點(diǎn)圖

圖片發(fā)自簡書App

在我們的節(jié)點(diǎn)存儲(chǔ)庫中搜索Views 項(xiàng)下的Scatter Plot 。將其以類似的方式拖放到工作流中,并將文件閱讀器的輸出連接到此節(jié)點(diǎn)。

接下來,配置節(jié)點(diǎn),選擇你需要多少行數(shù)據(jù),并希望可視化(我選擇了3000)。

單擊Execute,然后查看:散點(diǎn)圖。

圖片發(fā)自簡書App

X軸為Item_Type,Y軸為Item_Outlet_Sales。

上面的圖代表了每種商品的銷售情況,并向我們展示了水果和蔬菜的銷售量是最高的。

餅狀圖

圖片發(fā)自簡書App

要了解我們數(shù)據(jù)庫中所有產(chǎn)品類型的平均銷售估算,我們將使用一個(gè)餅圖。

單擊視圖下的餅圖節(jié)點(diǎn)并將其連接到你的文件閱讀器。選擇需要隔離的列并選擇首選的聚合方法,然后應(yīng)用。

這張圖表向我們展示了銷售在各種產(chǎn)品上的平均分配?!暗矸垲愂称贰钡钠骄N量為7.7%。

以上,我只使用了兩種類型的視圖,盡管你還可以在瀏覽Views選項(xiàng)卡下查看多種表單中的數(shù)據(jù)。比如可以使用直方圖、行圖等來更好地可視化你的數(shù)據(jù)。

我喜歡像Tableau這樣的工具,它是實(shí)現(xiàn)數(shù)據(jù)可視化的最有力工具(https://www.analyticsvidhya.com/blog/2017/07/data-visualisation-made-easy/)。

如何清洗數(shù)據(jù)?

在訓(xùn)練模型之前,你可以進(jìn)行的一項(xiàng)內(nèi)容就是數(shù)據(jù)清理和特性提?。╤ttps://www.analyticsvidhya.com/blog/2016/01/guide-data-exploration/)。這里,我將提供一個(gè)關(guān)于KNIME數(shù)據(jù)清理步驟的概述。

尋找Missing Values

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

再次訪問節(jié)點(diǎn)存儲(chǔ)庫,找到Missing Values節(jié)點(diǎn)。拖放它,并將我們的文件閱讀器File reader 的輸出連接到節(jié)點(diǎn)。

圖片發(fā)自簡書App

Imputations

要imputed values ,請選擇Missing value并單擊Configure。根據(jù)所要數(shù)據(jù)的類型,選擇你想要的數(shù)據(jù),并點(diǎn)擊Apply。

圖片發(fā)自簡書App

現(xiàn)在,當(dāng)我們執(zhí)行它時(shí),在Missing value節(jié)點(diǎn)的輸出端口上已經(jīng)準(zhǔn)備好了具有imputed values的完整數(shù)據(jù)集。在我的分析中,我選擇了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

訓(xùn)練你的第一個(gè)模型

讓我們來看看如何在KNIME中構(gòu)建機(jī)器學(xué)習(xí)模型。

實(shí)現(xiàn)一個(gè)線性模型Linear Model

首先,我們將訓(xùn)練一個(gè)線性模型Linear Model,它包含了數(shù)據(jù)集的所有特性,以了解如何選擇特性并構(gòu)建模型。這是一個(gè)初學(xué)者的線性回歸指南(https://www.analyticsvidhya.com/blog/2017/06/a-comprehensive-guide-for-linear-ridge-and-lasso-regression/)。

進(jìn)入你的節(jié)點(diǎn)存儲(chǔ)庫,并將Linear Regression Learner拖到工作流中。然后將收集的干凈數(shù)據(jù)連接到 Missing value 節(jié)點(diǎn)的輸出端口。

圖片發(fā)自簡書App

這是你現(xiàn)在的屏幕呈現(xiàn)。在Configuration選項(xiàng)卡中,排除Item_Identifier并在頂部選擇目標(biāo)變量。完成這個(gè)任務(wù)之后,需要導(dǎo)入testdata來運(yùn)行模型。

將另一個(gè)文件閱讀器拖放到工作流中,并從你的系統(tǒng)中選擇測試數(shù)據(jù)。

圖片發(fā)自簡書App

正如我們所看到的,測試數(shù)據(jù)也包含缺失值。我們將以與訓(xùn)練數(shù)據(jù)相同的方式在Missing value節(jié)點(diǎn)上運(yùn)行它。

在我們清洗了測試數(shù)據(jù)之后,將引入一個(gè)新的節(jié)點(diǎn):Regression predictor。

圖片發(fā)自簡書App

通過將learner的輸出與預(yù)測器的輸入連接起來,將你的模型加載到預(yù)測器中。在預(yù)測器的第二個(gè)輸入中,加載你的測試數(shù)據(jù)。預(yù)測器會(huì)根據(jù)你的learner自動(dòng)調(diào)整預(yù)測欄,但也可以手動(dòng)改變它。

KNIME有能力在分析標(biāo)簽下訓(xùn)練一些非常專業(yè)的模型。這里是一個(gè)列表:

Clustering

Neural networks

Ensemble learners

Na?ve Bayes

提交你的解決方案

在執(zhí)行預(yù)測器之后,輸出幾乎已經(jīng)準(zhǔn)備好提交了。

在節(jié)點(diǎn)存儲(chǔ)庫中找到節(jié)點(diǎn)列過濾器Column filter,并將其拖到工作流中。將預(yù)測器的輸出連接到列篩選器,并配置它篩選所需的列。在這種情況下,你需要Item_Identifier、Outlet_Identifier和Outlet_Sales的預(yù)測。

圖片發(fā)自簡書App

執(zhí)行列過濾器Column filter,最后,搜索節(jié)點(diǎn)CSV writer并將你的預(yù)測記錄在硬盤上。

圖片發(fā)自簡書App

調(diào)整路徑,將其設(shè)置為需要存儲(chǔ)的CSV文件,并執(zhí)行該節(jié)點(diǎn)。最后,打開CSV文件以按照我們的解決方案來糾正列名。將CSV文件壓縮成ZIP文件并提交你的解決方案!

圖片發(fā)自簡書App

這是最終的工作流圖。

在可移植性方面,KNIME工作流非常方便。它們可以發(fā)送給你的朋友或同事一起構(gòu)建,增加你產(chǎn)品的功能!

為了導(dǎo)出一個(gè)KNIME工作流,可以簡單地單擊File > Export KNIME Workflow.

圖片發(fā)自簡書App

在此之后,選擇您需要導(dǎo)出的合適的工作流,然后單擊Finish。

圖片發(fā)自簡書App

這會(huì)創(chuàng)建一個(gè).knwf文件,你可以發(fā)送給任何人,他們將能夠使用一鍵訪問它!

限制

KNIME是一個(gè)非常強(qiáng)大的開源工具,但是它也有自己的局限性。主要是:

可視化并不像其他一些開源軟件(比如RStudio)那樣簡潔優(yōu)雅。

版本更新不受支持;你將不得不重新安裝軟件(也就是說,從版本2更新到版本3,你將需要重新安裝)。

貢獻(xiàn)社區(qū)不像Python或CRAN社區(qū)那么大,因此新的功能需要很長時(shí)間才能添加到KNIME中。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容