自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

大數(shù)據(jù)
這篇文章適合那些剛接觸Kaggle、想盡快熟悉Kaggle并且獨(dú)立完成一個(gè)競(jìng)賽項(xiàng)目的網(wǎng)友,對(duì)于已經(jīng)在Kaggle上參賽過的網(wǎng)友來說,大可不必耗費(fèi)時(shí)間閱讀本文。本文分為兩部分介紹Kaggle,第一部分簡單介紹Kaggle,第二部分將展示解決一個(gè)競(jìng)賽項(xiàng)目的全過程。如有錯(cuò)誤,請(qǐng)指正!

這篇文章適合那些剛接觸Kaggle、想盡快熟悉Kaggle并且獨(dú)立完成一個(gè)競(jìng)賽項(xiàng)目的網(wǎng)友,對(duì)于已經(jīng)在Kaggle上參賽過的網(wǎng)友來說,大可不必耗費(fèi)時(shí)間閱讀本文。本文分為兩部分介紹Kaggle,***部分簡單介紹Kaggle,第二部分將展示解決一個(gè)競(jìng)賽項(xiàng)目的全過程。如有錯(cuò)誤,請(qǐng)指正!

[[182402]]

1、Kaggle簡介

Kaggle是一個(gè)數(shù)據(jù)分析的競(jìng)賽平臺(tái),網(wǎng)址:https://www.kaggle.com/

企業(yè)或者研究者可以將數(shù)據(jù)、問題描述、期望的指標(biāo)發(fā)布到Kaggle上,以競(jìng)賽的形式向廣大的數(shù)據(jù)科學(xué)家征集解決方

案,類似于KDD-CUP(國際知識(shí)發(fā)現(xiàn)和數(shù)據(jù)挖掘競(jìng)賽)。Kaggle上的參賽者將數(shù)據(jù)下載下來,分析數(shù)據(jù),然后運(yùn)用機(jī)

器學(xué)習(xí)、數(shù)據(jù)挖掘等知識(shí),建立算法模型,解決問題得出結(jié)果,***將結(jié)果提交,如果提交的結(jié)果符合指標(biāo)要求并且在參賽者中排名***,將獲得比賽豐厚的獎(jiǎng)金。更多內(nèi)容可以參閱:大數(shù)據(jù)眾包平臺(tái)

下面我以圖文的形式介紹Kaggle:

進(jìn)入Kaggle網(wǎng)站:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

這是當(dāng)前正在火熱進(jìn)行的有獎(jiǎng)比賽,有冠軍杯形狀的是“Featured”,譯為“號(hào)召”,召集數(shù)據(jù)科學(xué)高手去參賽。下面那個(gè)灰色的有試劑瓶形狀的是“Research”,獎(jiǎng)金少一點(diǎn)。這兩個(gè)類別的比賽是有獎(jiǎng)競(jìng)賽,難度自然不小,作為入門者,應(yīng)該先做練習(xí)賽:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

左圖的比賽是“101”,右圖的是“Playground”,都是練習(xí)賽,適合入門。入門Kaggle***的方法就是獨(dú)立完成101和playground這兩個(gè)級(jí)別的競(jìng)賽項(xiàng)目。本文的第二部分將選101中的“Digit Recognition”作為講解。

點(diǎn)擊進(jìn)入賽題“Digit Recognition”:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

這是一個(gè)識(shí)別數(shù)字0~9的練習(xí)賽,“Competition Details“是這個(gè)比賽的描述,說明參賽者需要解決的問題。”Get the Data“是數(shù)據(jù)下載,參賽者用這些數(shù)據(jù)來訓(xùn)練自己的模型,得出結(jié)果,數(shù)據(jù)一般都是以csv格式給出:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

其中,train.csv就是訓(xùn)練樣本,test.csv就是測(cè)試樣本,由于這個(gè)是訓(xùn)練賽,所以還提供了兩種解決方案,knn_benchmark.R和rf_benchmark.R,前者是用R語。言寫的knn算法程序,后者是用R語言寫的隨機(jī)森林算法程序,它們的結(jié)果分別是knn_benchmark.csv和rf_benchmark.csv。關(guān)于csv格式文件,我前一篇文章有詳述:【Python】csv模塊的使用。

得出結(jié)果后,接下來就是提交結(jié)果”Make a submission“:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

要求提交的文件是csv格式的,假如你將結(jié)果保存在result.csv,那么點(diǎn)擊”Click or drop submission here“,選中result.csv文件上傳即可,系統(tǒng)將測(cè)試你提交的結(jié)果的準(zhǔn)確率,然后排名。

另外,除了“Competition Details“、”Get the Data“、”Make a submission“,側(cè)邊欄的”Home“、”Information“、”Forum”等,也提供了關(guān)于競(jìng)賽的一些相關(guān)信息,包括排名、規(guī)則、輔導(dǎo)……

【以上是***部分,暫且寫這么多,有補(bǔ)充的以后再更】

2、競(jìng)賽項(xiàng)目解題全過程

(1)知識(shí)準(zhǔn)備

首先,想解決上面的題目,還是需要一點(diǎn)ML算法的基礎(chǔ)的,另外就是要會(huì)用編程語言和相應(yīng)的第三方庫來實(shí)現(xiàn)算法,常用的有:

Python以及對(duì)應(yīng)的庫numpy、scipy、scikit-learn(實(shí)現(xiàn)了ML的一些算法,可以直接用)、theano(DeepLearning的算法包)。

R語言、weka

如果用到深度學(xué)習(xí)的算法,cuda、caffe也可以用。

總之,使用什么編程語言、什么平臺(tái)、什么第三方庫都無所謂,無論你用什么方法,Kaggle只需要你線上提交結(jié)果,線下你如何實(shí)現(xiàn)算法是沒有限制的。

Ok,下面講解題過程,以”Digit Recognition“為例,數(shù)字識(shí)別這個(gè)問題我之前寫過兩篇文章,分別用kNN算法和Logistic算法去實(shí)現(xiàn),有完整的代碼,有興趣可以閱讀:kNN算法實(shí)現(xiàn)數(shù)字識(shí)別、 Logistic回歸實(shí)現(xiàn)數(shù)字識(shí)別

(2)Digit Recognition解題過程

下面我將采用kNN算法來解決Kaggle上的這道Digit Recognition訓(xùn)練題。上面提到,我之前用kNN算法實(shí)現(xiàn)過,這里我將直接copy之前的算法的核心代碼,核心代碼是關(guān)于kNN算法的主體實(shí)現(xiàn),我不再贅述,我把重點(diǎn)放在處理數(shù)據(jù)上。

以下工程基于Python、numpy

獲取數(shù)據(jù)

從”Get the Data“下載以下三個(gè)csv文件:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

分析train.csv數(shù)據(jù)

train.csv是訓(xùn)練樣本集,大小42001*785,***行是文字描述,所以實(shí)際的樣本數(shù)據(jù)大小是42000*785,其中***列的每一個(gè)數(shù)字是它對(duì)應(yīng)行的label,可以將***列單獨(dú)取出來,得到42000*1的向量trainLabel,剩下的就是42000*784的特征向量集trainData,所以從train.csv可以獲取兩個(gè)矩陣trainLabel、trainData。

下面給出代碼,另外關(guān)于如何從csv文件中讀取數(shù)據(jù),參閱:csv模塊的使用

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

這里還有兩個(gè)函數(shù)需要說明一下,toInt()函數(shù),是將字符串轉(zhuǎn)換為整數(shù),因?yàn)閺腸sv文件讀取出來的,是字符串類型的,比如‘253’,而我們接下來運(yùn)算需要的是整數(shù)類型的,因此要轉(zhuǎn)換,int(‘253’)=253。toInt()函數(shù)如下:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

nomalizing()函數(shù)做的工作是歸一化,因?yàn)閠rain.csv里面提供的表示圖像的數(shù)據(jù)是0~255的,為了簡化運(yùn)算,我們可以將其轉(zhuǎn)化為二值圖像,因此將所有非0的數(shù)字,即1~255都?xì)w一化為1。nomalizing()函數(shù)如下:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

分析test.csv數(shù)據(jù)

test.csv里的數(shù)據(jù)大小是28001*784,***行是文字描述,因此實(shí)際的測(cè)試數(shù)據(jù)樣本是28000*784,與train.csv不同,沒有l(wèi)abel,28000*784即28000個(gè)測(cè)試樣本,我們要做的工作就是為這28000個(gè)測(cè)試樣本找出正確的label。所以從test.csv我們可以得到測(cè)試樣本集testData,代碼如下:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

分析knn_benchmark.csv

前面已經(jīng)提到,由于digit recognition是訓(xùn)練賽,所以這個(gè)文件是官方給出的參考結(jié)果,本來可以不理這個(gè)文件的,但是我下面為了對(duì)比自己的訓(xùn)練結(jié)果,所以也把knn_benchmark.csv這個(gè)文件讀取出來,這個(gè)文件里的數(shù)據(jù)是28001*2,***行是文字說明,可以去掉,***列表示圖片序號(hào)1~28000,第二列是圖片對(duì)應(yīng)的數(shù)字。從knn_benchmark.csv可以得到28000*1的測(cè)試結(jié)果矩陣testResult,代碼:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

到這里,數(shù)據(jù)分析和處理已經(jīng)完成,我們獲得的矩陣有:trainData、trainLabel、testData、testResult

算法設(shè)計(jì)

這里我們采用kNN算法來分類,核心代碼:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

關(guān)于這個(gè)函數(shù),參考:kNN算法實(shí)現(xiàn)數(shù)字識(shí)別

簡單說明一下,inX就是輸入的單個(gè)樣本,是一個(gè)特征向量。dataSet是訓(xùn)練樣本,對(duì)應(yīng)上面的trainData,labels對(duì)應(yīng)trainLabel,k是knn算法選定的k,一般選擇0~20之間的數(shù)字。這個(gè)函數(shù)將返回inX的label,即圖片inX對(duì)應(yīng)的數(shù)字。

對(duì)于測(cè)試集里28000個(gè)樣本,調(diào)用28000次這個(gè)函數(shù)即可。

保存結(jié)果

kaggle上要求提交的文件格式是csv,上面我們得到了28000個(gè)測(cè)試樣本的label,必須將其保存成csv格式文件才可以提交,關(guān)于csv,參考:【Python】csv模塊的使用。

代碼:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

綜合各函數(shù)

上面各個(gè)函數(shù)已經(jīng)做完了所有需要做的工作,現(xiàn)在需要寫一個(gè)函數(shù)將它們組合起來解決digit recognition這個(gè)題目。我們寫一個(gè)handwritingClassTest函數(shù),運(yùn)行這個(gè)函數(shù),就可以得到訓(xùn)練結(jié)果result.csv。

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

運(yùn)行這個(gè)函數(shù),可以得到result.csv文件:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

2 0 9 9 3 7 0 3…….就是每個(gè)圖片對(duì)應(yīng)的數(shù)字。與參考結(jié)果knn_benchmark.csv比較一下:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

28000個(gè)樣本中有1004個(gè)與kknn_benchmark.csv中的不一樣。錯(cuò)誤率為3.5%,這個(gè)效果并不好,原因是我并未將所有訓(xùn)練樣本都拿來訓(xùn)練,因?yàn)樘〞r(shí)間,我只取一半的訓(xùn)練樣本來訓(xùn)練,即上面的結(jié)果對(duì)應(yīng)的代碼是:

  1. [python] view plain copyclassifierResult = classify(testData[i], trainData[0:20000], trainLabel[0:20000], 5) 

訓(xùn)練一半的樣本,程序跑了將近70分鐘(在個(gè)人PC上)。

提交結(jié)果

將result.csv整理成kknn_benchmark.csv那種格式,即加入***行文字說明,加入***列的圖片序號(hào),然后make a submission,結(jié)果準(zhǔn)確率96.5%:

大數(shù)據(jù)競(jìng)賽平臺(tái)——Kaggle入門篇

下載工程代碼:github地址

責(zé)任編輯:未麗燕 來源: 36大數(shù)據(jù)
相關(guān)推薦

2011-01-18 17:00:31

Postfix入門

2017-09-12 10:26:47

springbootmaven結(jié)構(gòu)

2018-08-15 13:56:47

Kaggle數(shù)據(jù)挖掘項(xiàng)目

2019-04-10 09:44:05

2013-01-18 10:04:33

大數(shù)據(jù)分析

2009-06-09 13:02:30

NetBeans使用教程

2020-11-16 10:19:33

Java

2016-09-06 17:43:12

SwiftCloudKit開發(fā)

2022-03-28 09:31:58

for循環(huán)語句

2022-01-27 09:35:45

whiledo-while循環(huán)Java基礎(chǔ)

2020-11-13 07:22:46

Java基礎(chǔ)While

2012-01-17 10:47:07

jQuery

2015-07-30 09:43:10

獨(dú)立游戲開發(fā)入門

2022-07-06 07:57:37

Zookeeper分布式服務(wù)框架

2021-12-21 09:02:31

Matplotlib Python可視化

2020-11-09 10:19:05

Java

2020-11-19 10:36:16

Java基礎(chǔ)方法

2009-06-15 17:22:36

JBoss Seam

2022-03-10 09:33:21

Java數(shù)組初始化

2018-12-21 12:25:08

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)