国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Kaggle案例——用python從進網站到獲得評測結果

Crazy_Coder / 2500人閱讀

摘要:訓練集是用來訓練你的機器學習模型的。但機器學習,你也要教它一些事實,比如長得像圖片的就是狗,長得像圖片的就是貓。好了,這樣我們整體的一個機器學習的簡單項目就完成,但我們還是要看一下效果。

最近寫了Kaggle的一個playground項目——預測科比投籃是否命中https://www.kaggle.com/c/kobe...,主要使用python的pandas和sklearn包。 這里和大家分享一下。

首先就是進入Kaggle官網https://www.kaggle.com/,Kaggle是一個專門數據競賽的網站。經常會有一些有獎的競賽,當然入門也可以選101和playground的有趣的例子進行練習。官網給出的經典例子就是預測Titanic乘客的生存概率。

當然第一步就是注冊。

注冊后就可以直接選擇自己想參加的競賽了,本文都以預測科比投籃命中為例。注冊之后我們點擊上方的Competions,也就是圖中上方第一個紅框來進入競賽選擇頁面。接著點擊下圖第二個紅框ALL來顯示所有的競賽。然后我們可以選第三個紅框,里面有getting started(101)和playground。都是難度稍低的競賽很適合練習。

競賽選擇頁面

其中在gettind started里面的項目應該都是有tutorials的,都會有相關的數據處理和模型選擇的教程。https://www.kaggle.com/c/tita... 想做數據處理的也可以先看這個例子。我們仍以預測科比投籃為例,從all的playground里找到(https://www.kaggle.com/c/kobe... 。

進去之后大概就是這個樣子的,我們點擊Data,進入數據頁面,上面data.csv.zip是總的數據,包括訓練集和測試集。下面的sample_submission....是提交結果的demo。

這里給之前沒接觸過機器學習的同學講解一下什么是訓練集和測試集,了解機器學習的請跳過這三段。訓練集是用來訓練你的機器學習模型的。就比如我給了你一堆貓和狗的圖片,并且我給每張圖片都標記上了這張圖是‘貓’還是‘狗’。而我們的目的是為了解決如果給你很多(比如1億張)新的貓或狗的圖片,而且沒有標記到底是貓還是狗,你一定懶得去做(對,我不相信有人能這么有毅力!!!)會想讓機器解決。但機器學習,你也要教它一些事實,比如長得像圖片A的就是狗,長得像圖片B的就是貓。也就是把圖片和正確的標記給機器,讓機器能夠根據你給他的這些數據來學習到一個判別方法,而給它的‘圖片和正確的標記’就是訓練集。

給了訓練集之后機器是學習了,但它學的好不好呢?這就需要用到測試集,測試集也包含圖片和正確的標記。這就好比我們學生時代的考試,你要去考考機器,看它學的怎么樣,從而才知道你訓練的好不好。但測試集不能和訓練集重復,防止它死記硬背,就像當年考數學,老師會把題修改一下讓你做一樣。

所以我們一般會將得到的所有標記好的圖片(包含對應正確標記)分為兩組大致9比1的樣子,分別是訓練集和測試集。來對機器進行訓練和測試。

回到正軌,解壓上面下載的文件,打開csv文件。我們會看到——

除了表頭,一共有30697行,而且有數字有字符串,看得頭都大了,怎么辦!

還好我們有電腦,有python,有別人寫好的工具包pandas!

第一步,我們進入python,在命令行輸入python

第二步,導入pandas

>>import pandas as pd

如果報錯,說明你沒安裝pandas,去安裝吧

第三步,載入csv文件并查看數據,下面的文件名寫你自己的文件路徑

>>data = pd.read_csv("data/data.csv")

>>print data.info()

打印結果如下,可以看出顯示了csv文件的各列名稱,數量,是否全空,類型(這里不是數字都是object),還有一些統計信息等等。

其中shot_made_flag就是投進與否,也就是結果/標簽/分類。1表示投進,0表示沒進。

第4步,我們可以查看數值類數據的一些分布情況,這里只是部分。

>>print data.describe()

第5步,查看非數值類數據分布

>>print data.describe(include=["O"])

但是這樣我們還是不知道這些離散值有哪幾類,比如shot_type到底一共有哪幾種呢?像這樣。

>>print set(data["shot_type"].tolist())

打印結果:set(["3PT Field Goal", "2PT Field Goal"])

如果你還想看每類下面的統計數字。再像這樣。

>>> print data["shot_type"].value_counts()

2PT Field Goal 24271

3PT Field Goal 6426

Name: shot_type, dtype: int64

總之,pandas的功能超乎你想象。

不過只能看數據分布是不夠的,機器現在還是只能識別數字,所以上面的object類型的數據,我們還是要轉換成數字。這里我們用最簡單的映射辦法來實現,映射按照次數來實現,比如上面的‘shot_type’,我們按照出現的次數從0向上排,比如這里2分球我們認為是0,3分球認為是1。

除了這些問題之外,我們還發現有些數據是沒有用處的,比如team_id、team_name都是湖人,沒什么用,還有就是shot_distant和loc_x、loc_y其實是有重復信息的。所以我們進行了篩選和處理了一部分,這一步在數據處理術語叫數據預處理。從而得到一個新的數據表pretreated_data(pandas的DataFrame格式)。代碼地址https://github.com/Cauchyzhou... 。

預處理后的數據

接著我們還要拆分數據到訓練集和測試集,注意保存的路徑也要根據自己的實際情況來。

PS:這里的測試集沒有結果/標簽,是因為我們的測試是直接將預測的結果傳到網站上,網站會返回一個預測結果與真實結果的誤差。

>>notnull = pretreated_data["target"].notnull()

>>isnull = ~ notnull

>>train_set = pretreated_data[notnull]

>>predict_set = pretreated_data[isnull]

>>train_set.to_csv("data/train_set.csv")

>>predict_set.to_csv("data/predict_set.csv")

到這里,數據預處理基本就結束了。

接著我們就要用訓練集,訓練了,我們這里使用傳統的機器學習方法,而傳統方法,最好的就是用sklearn這個工具包,全名scikit-learn。官網地址:http://scikit-learn.org/stable/

這個包有多粗暴呢,就是粗暴到你可以不了解任何算法細節,直接調用就好了(當然還是推薦理解一下算法,畢竟沒有最好的算法,只有最合適的算法)

這里我們就用最簡單的決策樹來預測結果。

>>from sklearn import tree

>>import pandas as pd

>>data = pd.read_csv("data/train_set.csv")

>>X = data.drop("target",axis=1) #去掉結果/標簽列

>>Y = data["target"] #訓練集的結果

>>clf = tree.DecisionTreeClassifier()

>>clf.fit(X,Y)

經過上面幾句話,我們就獲得了訓練好的模型clf。接著我們就可以用這個模型來預測測試集的結果了。

>>predict = pd.read_csv("data/predict_set.csv")

>>X_ = predict.drop("target",axis=1)

>>out = clf.predict(X)

這樣就預測好了,是不是很粗暴!接下來保存結果。

>>OutDf = pd.DataFrame(index= predict["shot_id"].values,columns=["shot_made_flag"])

>>OutDf["shot_made_flag"] = out

>>OutDf.to_csv("DT_out.csv")

好了,這樣我們整體的一個機器學習的簡單項目就完成,但我們還是要看一下效果。我們生成的csv文件是這樣式的~第一列是shot_id,第二列是shot_made_flag

我們需要在線提交,這里保存的結果格式是點擊紅框(這里可能不太一樣,因為我曾經提交過,不是第一次提交)

然后我們就會進入到這個頁面,找到綠色背景的數字1那里,我們把自己的csv文件拖進去,就會出現2那里的損失得分,越小越好,因為我用的是最簡單的決策樹,只能處理線性問題,顯然這個問題并不是線性的,所以得分很差。

因為這個競賽已經結束了,所以不會有排名,只能進到3Leaderboard根據自己的得分來得出自己的排名。

按照123步查看自己訓練的模型結果

這樣,我們的一個整體的kaggle競賽的流程就結束了,沒想到碼博客還是挺累的,而且簡書修改博客竟然會導致重新上傳圖片。寫了2個半小時,改了半個小時格式。寫的還是比較倉促,希望大家多提意見。

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41882.html

相關文章

  • (轉)大數據競賽平臺——Kaggle 入門

    摘要:是玩數據機器學習的開發者們展示功力揚名立萬的江湖。上的參賽者將數據下載下來,分析數據,然后運用機器學習數據挖掘等知識,建立算法模型,解決問題得出結果,最后將結果提交,如果提交的結果符合指標要求并且在參賽者中排名第一,將獲得比賽豐厚的獎金。 看到了一篇非常好的學習大數據挖掘學習的博文,所以特此轉載過來,閑暇時可以用python練練手。Kaggle 是玩數據、機器學習的開發者們展示功力、揚...

    UnixAgain 評論0 收藏0
  • 我是如何在1天內構建一個深度學習模型并進擊Kaggle比賽的

    摘要:是為結果導向型人群開設的深度學習在線課程。但是最關鍵的是,我想通過構建簡單的深度學習解決方案來實現理論和實踐的相結合。我的目標是在一天結束前進入排名的前。我的時間都用于學習庫組織數據和評估結果都是一些與深度學習無關的簡單流程。 Fast.ai是Jeremy Howard為結果導向型人群開設的深度學習在線課程。我讀過很多關于機器學習的書,也參加過不少這方面的課程,但我認為Fast.ai是迄今為...

    shinezejian 評論0 收藏0
  • 想入門人工智能? 這些優質的 AI 資源絕對不要錯過

    摘要:該課程旨在面向有抱負的工程師,從人工智能的基本概念入門到掌握為人工智能解決方案構建深度學習模型所需技能。 showImg(https://segmentfault.com/img/bVbkP5z?w=800&h=664); 作者 | Jo Stichbury翻譯 | Mika本文為 CDA 數據分析師原創作品,轉載需授權 前言 如今人工智能備受追捧,由于傳統軟件團隊缺乏AI技能,常常會...

    Barrior 評論0 收藏0
  • Kaggle冠軍經驗分享丨如何15個月沖到排行榜的首位

    摘要:你是如何開始參加比賽的正如之前所說的,我一直在閱讀大量機器學習和深度學習方面的書籍和論文,但發現很難將我學到的算法應用于小型數據集。機器學習中,你對哪個子領域最感興趣我對深度學習的各種進步都很感興趣。 showImg(https://segmentfault.com/img/bVboxKz?w=800&h=600); 作者 Kaggle Team中文翻譯 MikaCDA 數據分析師...

    AnthonyHan 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<