开源神器,无需一行代码就能搞定机器学习,不会数学也能上手
對(duì)于機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)的初學(xué)者來說,最大的挑戰(zhàn)之一是需要同時(shí)學(xué)習(xí)太多知識(shí),特別是如果你不知道如何編碼。你需要快速地適應(yīng)線性代數(shù)、統(tǒng)計(jì)以及其他數(shù)學(xué)概念,并學(xué)習(xí)如何編碼它們,對(duì)于新用戶來說,這可能會(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í)如何編寫代碼。
在今天的文章中,我將介紹一個(gè)基于GUI的工具:KNIME。讀完本文,你將在無需編寫任何代碼的情況下,預(yù)測零售商店的銷售情況。
好吧,讓我們開始吧!
為什么是KNIME ?
KNIME是一個(gè)基于GUI工作流的強(qiáng)大分析平臺(tái)。這意味著你不必知道如何編寫代碼(對(duì)于像我這樣的初學(xué)者來說是一種解脫),就能夠使用KNIME并獲得洞察力。
你可以執(zhí)行從基本I/O到數(shù)據(jù)操作、轉(zhuǎn)換和數(shù)據(jù)挖掘等功能。它將整個(gè)過程的所有功能合并到一個(gè)工作流中。
設(shè)置系統(tǒng)
在開始KNIME之前,首先你需要安裝它并在PC上設(shè)置它。
到KNIME下載頁面。
為你的電腦確定正確的版本:
安裝該平臺(tái),并為KNIME設(shè)置工作目錄以存儲(chǔ)其文件:
這就是你屏幕上顯示的樣子。
創(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)擊新建:
在你的平臺(tái)上創(chuàng)建一個(gè)新的KNIME工作流并命名它為Introduction。
現(xiàn)在,當(dāng)點(diǎn)擊Finish時(shí),你應(yīng)該已經(jīng)成功創(chuàng)建了你的第一個(gè)KNIME工作流。
這是你在KNIME上的空白工作流程。現(xiàn)在,你就可以從存儲(chǔ)庫將任何節(jié)點(diǎn)拖放到工作流中來探索和解決任何問題。
KNIME介紹
KNIME是一個(gè)可以幫助解決我們在數(shù)據(jù)科學(xué)的邊界上可能遇到任何問題的平臺(tái)。從最基本的可視化或線性回歸到高級(jí)深度學(xué)習(xí),KNIME可以做到這一切。
作為一個(gè)示例用例,我們在本教程中要解決的問題是Datahack可以訪問的BigMart銷售問題。
這個(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)鍵的角色。
你可以在這里找到BigMart銷售問題的方法和解決方案。
導(dǎo)入數(shù)據(jù)文件
讓我們從理解這個(gè)問題的第一(但非常重要)步驟開始:導(dǎo)入我們的數(shù)據(jù)。
拖放文件閱讀器節(jié)點(diǎn)到工作流并雙擊它。接下來,瀏覽需要導(dǎo)入到工作流中的文件。
在本文中,我們將學(xué)習(xí)如何解決BigMart銷售的問題,我將從BigMart Sales導(dǎo)入訓(xùn)練數(shù)據(jù)集:
這就是導(dǎo)入數(shù)據(jù)集時(shí)預(yù)覽的樣子。
讓我們可視化一些相關(guān)的列,并找出它們之間的相關(guān)性。相關(guān)性幫助我們發(fā)現(xiàn)哪些列可能是相互關(guān)聯(lián)的,并具有更高的預(yù)測能力來幫助我們最終的結(jié)果。要了解更多相關(guān)信息,請(qǐng)閱讀本文。
為了創(chuàng)建一個(gè)correlation matrix矩陣,我們在節(jié)點(diǎn)存儲(chǔ)庫中鍵入“l(fā)inear correlation”,然后將其拖放到我們的工作流中。
在我們拖放之后,我們將把文件閱讀器File reader的輸出連接到節(jié)點(diǎn)linear correlation的輸入。
單擊topmost面板上的綠色按鈕Execute。然后右擊相關(guān)節(jié)點(diǎn)并選擇View:Correlation Matrix 生成下圖。
這將幫助你選擇重要的特性,并通過在特定的單元上懸停來更好地預(yù)測。
接下來,我們將可視化數(shù)據(jù)集的范圍和模式來更好地理解它。
可視化和分析
其實(shí),我們想要從數(shù)據(jù)中了解到的主要事情之一就是:什么東西被賣得最多。
有兩種解釋信息的方法:散點(diǎn)圖(Scatter Plot )和餅圖(pie chart)。
散點(diǎn)圖
在我們的節(jié)點(diǎn)存儲(chǔ)庫中搜索Views 項(xiàng)下的Scatter Plot 。將其以類似的方式拖放到工作流中,并將文件閱讀器的輸出連接到此節(jié)點(diǎn)。
接下來,配置節(jié)點(diǎn),選擇你需要多少行數(shù)據(jù),并希望可視化(我選擇了3000)。
單擊Execute,然后查看:散點(diǎn)圖。
X軸為Item_Type,Y軸為Item_Outlet_Sales。
上面的圖代表了每種商品的銷售情況,并向我們展示了水果和蔬菜的銷售量是最高的。
餅狀圖
要了解我們數(shù)據(jù)庫中所有產(chǎn)品類型的平均銷售估算,我們將使用一個(gè)餅圖。
單擊視圖下的餅圖節(jié)點(diǎn)并將其連接到你的文件閱讀器。選擇需要隔離的列并選擇首選的聚合方法,然后應(yīng)用。
這張圖表向我們展示了銷售在各種產(chǎn)品上的平均分配。“淀粉類食品”的平均銷量為7.7%。
以上,我只使用了兩種類型的視圖,盡管你還可以在瀏覽Views選項(xiàng)卡下查看多種表單中的數(shù)據(jù)。比如可以使用直方圖、行圖等來更好地可視化你的數(shù)據(jù)。
我喜歡像Tableau這樣的工具,它是實(shí)現(xiàn)數(shù)據(jù)可視化的最有力工具。
如何清洗數(shù)據(jù)?
在訓(xùn)練模型之前,你可以進(jìn)行的一項(xiàng)內(nèi)容就是數(shù)據(jù)清理和特性提取。這里,我將提供一個(gè)關(guān)于KNIME數(shù)據(jù)清理步驟的概述。
尋找Missing Values
在估算值之前,我們需要知道哪些是缺失的。
再次訪問節(jié)點(diǎn)存儲(chǔ)庫,找到Missing Values節(jié)點(diǎn)。拖放它,并將我們的文件閱讀器File reader 的輸出連接到節(jié)點(diǎn)。
Imputations
要imputed values ,請(qǐng)選擇Missing value并單擊Configure。根據(jù)所要數(shù)據(jù)的類型,選擇你想要的數(shù)據(jù),并點(diǎn)擊Apply。
現(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é)者的線性回歸指南。
進(jìn)入你的節(jié)點(diǎn)存儲(chǔ)庫,并將Linear Regression Learner拖到工作流中。然后將收集的干凈數(shù)據(jù)連接到 Missing value 節(jié)點(diǎn)的輸出端口。
這是你現(xiàn)在的屏幕呈現(xiàn)。在Configuration選項(xiàng)卡中,排除Item_Identifier并在頂部選擇目標(biāo)變量。完成這個(gè)任務(wù)之后,需要導(dǎo)入testdata來運(yùn)行模型。
將另一個(gè)文件閱讀器拖放到工作流中,并從你的系統(tǒng)中選擇測試數(shù)據(jù)。
正如我們所看到的,測試數(shù)據(jù)也包含缺失值。我們將以與訓(xùn)練數(shù)據(jù)相同的方式在Missing value節(jié)點(diǎn)上運(yùn)行它。
在我們清洗了測試數(shù)據(jù)之后,將引入一個(gè)新的節(jié)點(diǎn):Regression predictor。
通過將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ù)測。
執(zhí)行列過濾器Column filter,最后,搜索節(jié)點(diǎn)CSV writer并將你的預(yù)測記錄在硬盤上。
調(diào)整路徑,將其設(shè)置為需要存儲(chǔ)的CSV文件,并執(zhí)行該節(jié)點(diǎn)。最后,打開CSV文件以按照我們的解決方案來糾正列名。將CSV文件壓縮成ZIP文件并提交你的解決方案!
這是最終的工作流圖。
在可移植性方面,KNIME工作流非常方便。它們可以發(fā)送給你的朋友或同事一起構(gòu)建,增加你產(chǎn)品的功能!
為了導(dǎo)出一個(gè)KNIME工作流,可以簡單地單擊File > Export KNIME Workflow.
在此之后,選擇您需要導(dǎo)出的合適的工作流,然后單擊Finish。
這會(huì)創(chuàng)建一個(gè).knwf文件,你可以發(fā)送給任何人,他們將能夠使用一鍵訪問它!
限制
KNIME是一個(gè)非常強(qiáng)大的開源工具,但是它也有自己的局限性。主要是:
- 可視化并不像其他一些開源軟件(比如RStudio)那樣簡潔優(yōu)雅。
- 版本更新不受支持;你將不得不重新安裝軟件(也就是說,從版本2更新到版本3,你將需要重新安裝)。
- 貢獻(xiàn)社區(qū)不像Python或CRAN社區(qū)那么大,因此新的功能需要很長時(shí)間才能添加到KNIME中。
原文鏈接:Building Your First Machine Learning Model Using KNIME(責(zé)編/魏偉)
總結(jié)
以上是生活随笔為你收集整理的开源神器,无需一行代码就能搞定机器学习,不会数学也能上手的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 七台河至昌吉回族自治州车师古道会经过哪些
- 下一篇: 广州南站有到龙门县的汽车吗?