你是否想學(xué)習(xí)數(shù)據(jù)科學(xué)中的Python卻苦于沒有時(shí)間?你是否正轉(zhuǎn)行數(shù)據(jù)科學(xué)領(lǐng)域因而想要學(xué)習(xí)Python?過年了,小伙伴是不是想在家也能有點(diǎn)收獲?本篇文章旨在討論如何在30天內(nèi)速成數(shù)據(jù)科學(xué)中的Python。同時(shí),我們也準(zhǔn)備了Python的每周計(jì)劃與主題。
在開始之前,讓我們先了解一下Python在數(shù)據(jù)科學(xué)中的用途吧。
數(shù)據(jù)科學(xué)融合了數(shù)據(jù)推理、算法開發(fā)與技術(shù)等學(xué)科,旨在分析解決復(fù)雜的問題。它能夠利用可用數(shù)據(jù)來解決現(xiàn)實(shí)問題。但是,數(shù)據(jù)分析并不是一步到位的,它需要運(yùn)用多種方法才能來找到合適的解決方案。同時(shí),數(shù)據(jù)科學(xué)家可能也需要經(jīng)歷多個(gè)階段才能對某特定問題得出一些見解。這一系列階段統(tǒng)稱為數(shù)據(jù)科學(xué)管道。讓我們來看看其中包含了哪些階段吧!
數(shù)據(jù)科學(xué)管道的不同階段
1. 明確問題
與大眾認(rèn)知不同,數(shù)據(jù)科學(xué)最困難的部分不是建立精準(zhǔn)的模型,也不是獲得優(yōu)良清晰的數(shù)據(jù);相比起來,明確可能存在的問題并提出衡量解決方案的合理方法要難得多。明確問題是為了深入理解已有的某特定問題。人們會(huì)組織多場頭腦風(fēng)暴會(huì)議來明確所需要解決的問題,因?yàn)槟愕淖罱K方案完全取決于你要解決的問題到底是什么。因此,如果你在明確問題階段就走偏了,那么你所解決問題很可能從一開始就從未存在過。
2. 假設(shè)檢驗(yàn)
假設(shè)檢驗(yàn)是統(tǒng)計(jì)學(xué)中的一種行為,即分析師檢驗(yàn)有關(guān)總體參數(shù)的某項(xiàng)假設(shè)。分析師所用的方法取決于所用數(shù)據(jù)的性質(zhì)以及分析的原因。假設(shè)檢驗(yàn)旨在根據(jù)小部分樣本數(shù)據(jù)推測假設(shè)結(jié)果。簡單來說就是,我們在明確問題階段提出一些假設(shè),然后再運(yùn)用數(shù)據(jù)來統(tǒng)計(jì)驗(yàn)證它們。
3. 數(shù)據(jù)收集與處理
數(shù)據(jù)收集指以既定的系統(tǒng)化方法收集與測量感興趣的變量信息,使人們能夠回答所規(guī)定的研究問題,檢驗(yàn)假設(shè),以及評估結(jié)果。另外,研究中的數(shù)據(jù)收集部分適用于所有研究領(lǐng)域,包括物理與社會(huì)科學(xué)、人文科學(xué)、商業(yè)等。雖然各學(xué)科的方法有所不同,但是在確保數(shù)據(jù)收集的準(zhǔn)確與真實(shí)這一點(diǎn)上卻是相同的。
此外,數(shù)據(jù)處理更多地是對數(shù)據(jù)執(zhí)行的一系列操作或步驟,以便于以適當(dāng)?shù)妮敵鲂问綑z驗(yàn)、組織、轉(zhuǎn)換、整合與提取數(shù)據(jù),以供后續(xù)使用。必須要嚴(yán)格記錄處理方法,以確保數(shù)據(jù)的實(shí)用性和準(zhǔn)確性。
4. 探索性數(shù)據(jù)分析(EDA)與特征工程
在清理轉(zhuǎn)換完數(shù)據(jù)之后,機(jī)器學(xué)習(xí)項(xiàng)目的下一步便是運(yùn)用探索性數(shù)據(jù)分析(EDA)來熟悉數(shù)據(jù)。EDA涉及數(shù)字摘要、圖表、聚合、分布與密度,可核查所有級別的因子變量和應(yīng)用一般性的統(tǒng)計(jì)方法。了解數(shù)據(jù)可為后續(xù)的模型選擇奠定基礎(chǔ),如選擇正確的機(jī)器學(xué)習(xí)算法來解決問題。特征工程是確定哪些預(yù)測變量會(huì)對機(jī)器學(xué)習(xí)算法的預(yù)測能力發(fā)揮最大作用的過程。特征工程的整個(gè)過程既是一門藝術(shù),也是一門科學(xué)。通常,特征工程與探索性數(shù)據(jù)分析相互合作,以提供急需的數(shù)據(jù)直覺。在這個(gè)過程中,有領(lǐng)域?qū)<沂呛芎玫?;但是,發(fā)揮你的想象力也是不錯(cuò)的。
5. 建模與預(yù)測
機(jī)器學(xué)習(xí)可用于預(yù)測未來。首先你需要提供一組訓(xùn)練實(shí)例,然后調(diào)整模型使其適用于該數(shù)據(jù)集,最后再將該模型應(yīng)用于新的案例之中以做出預(yù)測。預(yù)測模型對于初創(chuàng)公司而言是非常有用的,因?yàn)槟憧梢愿鶕?jù)用戶的預(yù)期行為來制作產(chǎn)品。比如,如果某用戶一直用流媒體服務(wù)觀看某個(gè)廣播頻道,那么應(yīng)用程序可在啟動(dòng)時(shí)自行加載該頻道。
6. 數(shù)據(jù)可視化
數(shù)據(jù)可視化指以圖表、圖形與條形圖的形式呈現(xiàn)數(shù)據(jù)/信息,為用戶提供可視化報(bào)告,以用于數(shù)據(jù)與模型預(yù)測的性能、操作或一般性統(tǒng)計(jì)。
7. 洞察的生成與實(shí)行
解釋數(shù)據(jù)更像是將你的發(fā)現(xiàn)傳達(dá)給感興趣的各方一樣。如果你無法向那些相信你的人闡釋你的發(fā)現(xiàn),那么不管你做什么都是徒勞的。因此,這一步顯得尤為重要。該步驟的目標(biāo)是,首先確定業(yè)務(wù)洞察,然后再將其與你的數(shù)據(jù)發(fā)現(xiàn)聯(lián)系起來。其次,你可能需要求助于領(lǐng)域?qū)<?,將?shù)據(jù)發(fā)現(xiàn)與商業(yè)問題聯(lián)系起來。領(lǐng)域?qū)<夷軒椭愀鶕?jù)業(yè)務(wù)維可視化你的發(fā)現(xiàn),這也方便你向非技術(shù)人員傳達(dá)事實(shí)。
Python在數(shù)據(jù)科學(xué)不同階段的應(yīng)用
在了解了數(shù)據(jù)科學(xué)管道的不同階段之后,我們可以了解一下Python在這幾個(gè)階段中的應(yīng)用。因此,現(xiàn)在我們能更好地理解Python是如何應(yīng)用于數(shù)據(jù)科學(xué)中的了。
首先,明確問題與洞察生成不需要使用任何編程語言,因?yàn)檫@兩個(gè)階段更多地是基于研究與決策,而非使用代碼。
1. 數(shù)據(jù)收集中的Python
許多數(shù)據(jù)科學(xué)項(xiàng)目都需要抓取網(wǎng)頁來收集后期會(huì)用到的數(shù)據(jù)。Python這種編程語言被廣泛應(yīng)用于數(shù)據(jù)科學(xué)社區(qū),因此具有模塊與工具生態(tài)系統(tǒng),以供用戶在項(xiàng)目中使用。
2. 假設(shè)檢驗(yàn)中的Python
假設(shè)檢驗(yàn)需要大量的統(tǒng)計(jì)知識與執(zhí)行。Python擁有可幫助用戶輕松執(zhí)行統(tǒng)計(jì)檢測與計(jì)算的庫。用戶可使用這些Python庫(如SciPy)來自動(dòng)執(zhí)行假設(shè)檢驗(yàn)任務(wù)。
3. 探索性數(shù)據(jù)分析(EDA)中的Python
許多庫都可用來執(zhí)行基本的探索性數(shù)據(jù)分析(EDA),比如pandas和matplotlib。pandas用于數(shù)據(jù)操作,matplotlib用于圖形繪制。Jupyter Notebooks用于寫代碼和其他發(fā)現(xiàn)。Jupyter Notebooks是一種用于數(shù)據(jù)分析和數(shù)據(jù)科學(xué)家的日記,你可以在這個(gè)基于網(wǎng)頁的平臺上結(jié)合Python、HTML與Markdwn來闡釋你的數(shù)據(jù)洞察。
4. 可視化中的Python
數(shù)據(jù)科學(xué)家的關(guān)鍵技能之一便是能夠講述引人入勝的故事。他能以一種平易近人又讓人興奮地方式可視化數(shù)據(jù)和發(fā)現(xiàn)。同時(shí),學(xué)習(xí)“庫”以可視化數(shù)據(jù)也能讓你提取信息,理解數(shù)據(jù),并做出有效決策。另外,像matplotlib和seaborn這樣的庫能讓用戶輕松構(gòu)建漂亮的可視化效果。此外,這些庫上手簡單,耗時(shí)較少。
5. 建模與預(yù)測中的Python
Python擁有像 sci-kit-learn這樣的庫。 sci-kit-learn是一款開源Python庫,通過統(tǒng)一的界面實(shí)現(xiàn)一系列機(jī)器學(xué)習(xí)、預(yù)處理、交叉驗(yàn)證與可視化算法。這些Python庫可將建模的數(shù)學(xué)部分抽象出來。因此,開發(fā)人員可專注于構(gòu)建可靠的模型,而不是理解復(fù)雜的數(shù)學(xué)執(zhí)行。如果你才剛開始接觸機(jī)器學(xué)習(xí),那么你可以點(diǎn)擊該鏈接了解更多信息。
學(xué)習(xí)時(shí)間表
在這個(gè)部分,我們?yōu)榇蠹覝?zhǔn)備了Python的每周學(xué)習(xí)主題,以幫助你們安排學(xué)習(xí)日程,做好30天的學(xué)習(xí)規(guī)劃。
第一周
1. Python基礎(chǔ)知識
首先開始學(xué)習(xí)Python的基礎(chǔ)知識。你可以先了解變量與控制流,然后學(xué)習(xí)Python的字符串、字典、元組以及其他數(shù)據(jù)結(jié)構(gòu)。
2. Python高級知識
當(dāng)你學(xué)完基礎(chǔ)概念之后,你就可以開始學(xué)習(xí)多線程、類、對象、正式表達(dá)式與網(wǎng)絡(luò)等概念了。雖然在大多數(shù)情況下這些概念可能并不大需要,但是了解一下也是有益無害的。
第二周
1. 用Python抓取網(wǎng)頁
它指的是使用代碼從網(wǎng)頁收集數(shù)據(jù),這是最合乎邏輯也是最簡單易得的數(shù)據(jù)來源之一。利用網(wǎng)頁抓取工具自動(dòng)執(zhí)行此操作可避免手動(dòng)收集數(shù)據(jù),能節(jié)省時(shí)間,同時(shí)也可讓你在所需結(jié)構(gòu)中獲取所有數(shù)據(jù)。你可以開始學(xué)習(xí)BeatifulSoup 和Scrapy等Python庫,它們具有從網(wǎng)站中抓取數(shù)據(jù)的功能。熟悉這些Python庫有助于你使用Python來收集數(shù)據(jù)。
2. Python中的Pandas, numPy and SciPy
Python自己有一套用于數(shù)據(jù)管理的庫。像pandas這樣的Python庫能讓用戶以數(shù)據(jù)幀的形式訪問數(shù)據(jù),方便用戶處理具有復(fù)雜結(jié)構(gòu)的數(shù)據(jù),并對其執(zhí)行數(shù)值操作,如,數(shù)據(jù)清洗、數(shù)據(jù)匯總等。但是,numPy更多地是處理數(shù)值方法,sciPy則是科學(xué)與統(tǒng)計(jì)函數(shù),以執(zhí)行復(fù)雜的數(shù)學(xué)計(jì)算。如果你要學(xué)習(xí)數(shù)據(jù)科學(xué)中的Python,那么這些Python庫都是必須要了解的。因此,學(xué)習(xí)這些Python庫時(shí),你需要格外上心。點(diǎn)擊此鏈接了解更多上述信息。
第三周
第三周的任務(wù)是理解并熟練掌握Python的機(jī)器學(xué)習(xí)功能。
1. Scikit-learn包
本周的第一個(gè)任務(wù)是理解Python的機(jī)器學(xué)習(xí)功能。只要說起機(jī)器學(xué)習(xí)和Python,Scikit-learn包都是必須要了解的。你需要花點(diǎn)時(shí)間學(xué)習(xí)Scikit-learn包所提供的方法。它提供了一種統(tǒng)一方法來適應(yīng)不同的模型,因此,在基于Python的ML開發(fā)人員中廣受歡迎。
2. Keras
Theano和TensorFlow是Python的兩個(gè)頂級數(shù)字平臺,可用于深度學(xué)習(xí)的開發(fā)。這兩個(gè)庫都非常強(qiáng)大,但是卻都難以直接用于創(chuàng)建深度學(xué)習(xí)的模型。因此,Keras這款Python庫提供了一種簡潔方便的方法,可在Theano或TensorFlow上創(chuàng)建一系列深度學(xué)習(xí)模型。它是一款用于深度學(xué)習(xí)的極簡Python庫,可在Theano或TensorFlow上運(yùn)行,旨在使用于研究與開發(fā)的深度學(xué)習(xí)模型的實(shí)施盡可能地變得又快又簡單。Keras可在Python 2.7或3.5中運(yùn)行。
第四周
第四周更多的是學(xué)習(xí)Python的可視化,并以項(xiàng)目的形式總結(jié)之前的學(xué)習(xí)成果。
1. Python中的Matplotlib
Matplotlib是一款Python 2D繪圖庫,能夠在跨平臺交互式環(huán)境中,以多種硬拷貝的格式生成高質(zhì)量圖形,可用于Python腳本,Python和IPython shell,Jupyter Notebook,Web應(yīng)用程序服務(wù)器以及四種圖形用戶界面工具包。它可將簡單的事情變得更加簡單,使困難的事情成為可能。此外,只需幾行代碼便可生成繪圖、直方圖、功率譜、條形圖、錯(cuò)誤圖表以及散點(diǎn)圖等。有關(guān)示例請參考示例圖和縮略圖庫。
2. 項(xiàng)目
學(xué)習(xí)了有關(guān)數(shù)據(jù)科學(xué)的Python的大部分知識之后,是時(shí)候以項(xiàng)目的形式整合所有的學(xué)習(xí)成果了。你可以自由挑選自己喜歡的項(xiàng)目。如果你一臉困惑,不知從何下手,那么就先從Kaggle中的Titanic問題開始吧。以下是一些提示:
1. 不要在意Kaggle的得分。你的目標(biāo)應(yīng)該是完成項(xiàng)目,而不是廣泛的模型擬合。
2. 專注于EDA與數(shù)據(jù)處理而非建模
3. 專注于利用學(xué)過的庫(pandas與numPy)進(jìn)行數(shù)據(jù)處理
總結(jié)
Python是一門通用的編程語言。除了數(shù)據(jù)科學(xué),它還可用于搭建網(wǎng)站、創(chuàng)建機(jī)器學(xué)習(xí)算法甚至是開發(fā)無人機(jī)。世界上大部分程序員都在使用Python,這是有原因的。因此,如果你要進(jìn)入數(shù)據(jù)科學(xué)領(lǐng)域,花點(diǎn)時(shí)間學(xué)習(xí)Python是值得的。有了大量可用的庫,Python將始終優(yōu)于其他語言。Python真的是一門十分有趣又有用的語言。
聯(lián)系客服