摘要:安裝安裝用于數(shù)據(jù)科學(xué)的的最佳方法是使用發(fā)行版。但這只是展示了構(gòu)建數(shù)據(jù)科學(xué)問(wèn)題的不同方式中的機(jī)器學(xué)習(xí)這是一個(gè)重要的主題,機(jī)器學(xué)習(xí)正在風(fēng)靡世界,是數(shù)據(jù)科學(xué)家工作的重要組成部分。
作為編程界的“頭牌”名媛,Python平易近人的態(tài)度和精明婉約的靈動(dòng)深得各個(gè)大佬歡心。比如:人工智能、web開(kāi)發(fā)、爬蟲(chóng)、系統(tǒng)運(yùn)維、數(shù)據(jù)分析與計(jì)算等等。這幾位風(fēng)流多金的行業(yè)精英隨便哪個(gè)都能“逆轉(zhuǎn)未來(lái)”。
本文為你精心準(zhǔn)備了一段Python與數(shù)據(jù)科學(xué)的“曖昧史”——用Python進(jìn)行數(shù)據(jù)科學(xué)概述,包括Numpy,Scipy,pandas,Scikit-Learn,XGBoost,TensorFlow和Keras等模塊、包、庫(kù)的用法。
1. 為何選擇Python?
Python作為一種語(yǔ)言,十項(xiàng)全能,易于學(xué)習(xí),安裝簡(jiǎn)單。同時(shí)有很多擴(kuò)展,非常適合進(jìn)行數(shù)據(jù)科學(xué)研究。像Google、Instagram、Youtube、Reddit等明星網(wǎng)站都在用Python搭建核心業(yè)務(wù)。
Python不僅僅用于數(shù)據(jù)科學(xué),還使用Python來(lái)做更多的工作——如編寫(xiě)腳本、構(gòu)建API、構(gòu)建網(wǎng)站等等。
關(guān)于Python的幾點(diǎn)重要事項(xiàng)需要注意。
目前,有兩種常用的Python版本。它們是版本2和3。大多數(shù)教程和本文將默認(rèn)使用的是Python的最新版本Python 3。但有時(shí)會(huì)遇到使用Python 2的書(shū)籍或文章。版本之間的差異并不大,但有時(shí)在運(yùn)行版本3時(shí)復(fù)制和粘貼版本2代碼將無(wú)法正常工作,因此需要進(jìn)行一些輕微的編輯。
要注意Python十分介意空白的地方(即空格和返回字符)。如果把空格放在錯(cuò)誤的地方,程序很可能會(huì)產(chǎn)生錯(cuò)誤。
與其他語(yǔ)言相比,Python不需要管理內(nèi)存,也有良好的社區(qū)支持。
2. 安裝Python
安裝用于數(shù)據(jù)科學(xué)的Python的最佳方法是使用Anaconda發(fā)行版。
Anacoda有你使用Python進(jìn)行數(shù)據(jù)科學(xué)研究所需的資料,包括將在本文中介紹的許多軟件包。
單擊Products - > Distribution并向下滾動(dòng),可以看到適用于Mac,Windows和Linux的安裝程序。即使Mac上已經(jīng)有Python,也應(yīng)該考慮安裝Anaconda發(fā)行版,因?yàn)橛欣诎惭b其他軟件包。
此外,還可以去官方Python網(wǎng)站下載安裝程序。
包管理器:
包是一段Python代碼,而不是語(yǔ)言的一部分,包對(duì)于執(zhí)行某些任務(wù)非常有幫助。通過(guò)包,我們可以復(fù)制并粘貼代碼,然后將其放在Python解釋器(用于運(yùn)行代碼)可以找到的地方。
但這很麻煩,每次啟動(dòng)新項(xiàng)目或更新包時(shí)都必須進(jìn)行內(nèi)容的復(fù)制和粘貼操作。因此,我們可以使用包管理器。Anaconda發(fā)行版中自帶包管理器。如果沒(méi)有,建議安裝pip。
無(wú)論選擇哪一個(gè),都可以在終端(或命令提示符)上使用命令輕松安裝和更新軟件包。
3. 使用Python進(jìn)行數(shù)據(jù)科學(xué)研究
Python迎合許多不同開(kāi)發(fā)人員的技術(shù)要求(Web開(kāi)發(fā)人員,數(shù)據(jù)分析師,數(shù)據(jù)科學(xué)家),因此使用該語(yǔ)言具有很多不同的編程方法。
Python是一種解釋型語(yǔ)言,不必將代碼編譯成可執(zhí)行文件,只需將包含代碼的文本文檔傳遞給解釋器即可。
快速瀏覽一下與Python解釋器交互的不同方法吧。
(1) 在終端
如果打開(kāi)終端(或命令提示符)并鍵入單詞"Python",將啟動(dòng)一個(gè)shell會(huì)話??梢栽趯?duì)話中輸入有效的Python命令,以實(shí)現(xiàn)相應(yīng)的程序操作。
這可以是快速調(diào)試某些東西的好方法,但即使是一個(gè)小項(xiàng)目,在終端中調(diào)試也很困難。
(2) 使用文本編輯器
如果你在文本文件中編寫(xiě)一系列Python命令并使用.py擴(kuò)展名保存它,則可以使用終端導(dǎo)航到該文件,并通過(guò)輸入python YOUR_FILE_NAME.py來(lái)運(yùn)行該程序。
這與在終端中逐個(gè)輸入命令基本相同,只是更容易修復(fù)錯(cuò)誤并更改程序的功能。
大家在學(xué)python的時(shí)候肯定會(huì)遇到很多難題,以及對(duì)于新技術(shù)的追求,這里推薦一下我們的Python學(xué)習(xí)扣qun:784758214,這里是python學(xué)習(xí)者聚集地!
(3) 在IDE中
IDE是一種專業(yè)級(jí)軟件,可以進(jìn)行軟件項(xiàng)目管理。
IDE的一個(gè)好處是,使用調(diào)試功能可以告訴你在嘗試運(yùn)行程序之前出錯(cuò)的位置。
某些IDE附帶了項(xiàng)目模板(用于特定任務(wù)),你可以使用這些模板根據(jù)最佳實(shí)踐設(shè)置項(xiàng)目。
(4) Jupyter Notebooks
這些方法都不是用python進(jìn)行數(shù)據(jù)科學(xué)的最佳方式,最好是使用Jupyter Notebooks。
Jupyter Notebooks使你能夠一次運(yùn)行一“塊”代碼,這意味著你可以在決定下一步做什么之前看到輸出信息-這在數(shù)據(jù)科學(xué)項(xiàng)目中非常重要,我們經(jīng)常需要在獲取輸出之前查看圖表。
如果你正在使用Anaconda,且已經(jīng)安裝了Jupyter lab。要啟動(dòng)它,只需要在終端中輸入"jupyter lab"即可。
如果正在使用pip,則必須使用命令"python pip install jupyter"安裝Jupyter lab。
4. Python中的數(shù)字計(jì)算
NumPy軟件包中包含許多有用的函數(shù),用于執(zhí)行數(shù)據(jù)科學(xué)工作所需的數(shù)學(xué)運(yùn)算。
它作為Anaconda發(fā)行版的一部分安裝,并且使用pip安裝,就像安裝Jupyter Notbooks一樣簡(jiǎn)單("pip install numpy")。
我們?cè)跀?shù)據(jù)科學(xué)中需要做的最常見(jiàn)的數(shù)學(xué)運(yùn)算是矩陣乘法,計(jì)算向量的點(diǎn)積,改變數(shù)組的數(shù)據(jù)類型以及創(chuàng)建數(shù)組!
以下是如何將列表編入NumPy數(shù)組的方法:
以下是如何在NumPy中進(jìn)行數(shù)組乘法和計(jì)算點(diǎn)積的方法:
以下是如何在NumPy中進(jìn)行矩陣乘法:
5. Python中的統(tǒng)計(jì)分析
Scipy包中包含專門用于統(tǒng)計(jì)的模塊(包的代碼的子部分)。
你可以使用"from scipy import stats"命令將其導(dǎo)入(在程序中使其功能可用)到你的筆記本中。該軟件包包含計(jì)算數(shù)據(jù)統(tǒng)計(jì)測(cè)量、執(zhí)行統(tǒng)計(jì)測(cè)試、計(jì)算相關(guān)性、匯總數(shù)據(jù)和研究各種概率分布所需的一切。
以下是使用Scipy快速訪問(wèn)數(shù)組的匯總統(tǒng)計(jì)信息(最小值,最大值,均值,方差,偏斜和峰度)的方法:
6. Python中的數(shù)據(jù)操作
數(shù)據(jù)科學(xué)家必須花費(fèi)大量的時(shí)間來(lái)清理和整理數(shù)據(jù)。幸運(yùn)的是,Pandas軟件包可以幫助我們用代碼而不是手工來(lái)完成這項(xiàng)工作。
使用Pandas執(zhí)行的最常見(jiàn)任務(wù)是從CSV文件和數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)。
它還具有強(qiáng)大的語(yǔ)法,可以將不同的數(shù)據(jù)集組合在一起(數(shù)據(jù)集在Pandas中稱為DataFrame)并執(zhí)行數(shù)據(jù)操作。
使用.head方法查看DataFrame的前幾行:
使用方括號(hào)選擇一列:
通過(guò)組合其他列來(lái)創(chuàng)建新列:
7. 在Python中使用數(shù)據(jù)庫(kù)
為了使用pandas read_sql方法,必須提前建立與數(shù)據(jù)庫(kù)的連接。
連接數(shù)據(jù)庫(kù)最安全的方法是使用Python的SQLAlchemy包。
SQL本身就是一種語(yǔ)言,并且連接到數(shù)據(jù)庫(kù)的方式取決于你正在使用的數(shù)據(jù)庫(kù)。
8. Python中的數(shù)據(jù)工程
有時(shí)我們傾向于在數(shù)據(jù)作為Pandas DataFrame形式到達(dá)我們的項(xiàng)目之前,對(duì)其進(jìn)行一些計(jì)算。
如果你正在使用數(shù)據(jù)庫(kù)或從Web上抓取數(shù)據(jù)(并將其存儲(chǔ)在某處),那么移動(dòng)數(shù)據(jù)并對(duì)其進(jìn)行轉(zhuǎn)換的過(guò)程稱為ETL(提取,轉(zhuǎn)換,加載)。
你從一個(gè)地方提取數(shù)據(jù),對(duì)其進(jìn)行一些轉(zhuǎn)換(通過(guò)添加數(shù)據(jù)來(lái)總結(jié)數(shù)據(jù),查找均值,更改數(shù)據(jù)類型等),然后將其加載到可以訪問(wèn)的位置。
有一個(gè)非??岬墓ぞ呓凶鯝irflow,它非常善于幫助管理ETL工作流程。更好的是,它是用Python編寫(xiě)的,由Airbnb開(kāi)發(fā)。
大家在學(xué)python的時(shí)候肯定會(huì)遇到很多難題,以及對(duì)于新技術(shù)的追求,這里推薦一下我們的Python學(xué)習(xí)扣qun:784758214,這里是python學(xué)習(xí)者聚集地!
9. Python中的大數(shù)據(jù)工程
有時(shí)ETL過(guò)程可能非常慢。如果你有數(shù)十億行數(shù)據(jù)(或者如果它們是一種奇怪的數(shù)據(jù)類型,如文本),可以使用許多不同的計(jì)算機(jī)分別進(jìn)行處理轉(zhuǎn)換,并在最后一秒將所有數(shù)據(jù)整合到一起。
這種架構(gòu)模式稱為MapReduce,它很受Hadoop的歡迎。
如今,很多人使用Spark來(lái)做這種數(shù)據(jù)轉(zhuǎn)換/檢索工作,并且有一個(gè)Spark的Python接口叫做PySpark。
MapReduce架構(gòu)和Spark都是非常復(fù)雜的工具,這里我不詳細(xì)介紹。只要知道它們的存在,如果你發(fā)現(xiàn)自己正在處理非常緩慢的ETL過(guò)程,PySpark可能會(huì)有所幫助。
10. Python中的進(jìn)一步統(tǒng)計(jì)
我們已經(jīng)知道可以使用Scipy的統(tǒng)計(jì)模塊運(yùn)行統(tǒng)計(jì)測(cè)試、計(jì)算描述性統(tǒng)計(jì)、p值以及偏斜和峰度等事情,但Python還能做些什么呢?
你應(yīng)該知道的一個(gè)特殊包是Lifelines包。
使用Lifelines包,你可以從稱為生存分析的統(tǒng)計(jì)子字段計(jì)算各種函數(shù)。
生存分析有很多應(yīng)用。我們可以用它來(lái)預(yù)測(cè)客戶流失(當(dāng)客戶取消訂閱時(shí))以及零售商店何時(shí)可能會(huì)被盜竊。
這些與包的創(chuàng)造者想象它將被用于完全不同(生存分析傳統(tǒng)上是醫(yī)學(xué)統(tǒng)計(jì)工具)的領(lǐng)域。但這只是展示了構(gòu)建數(shù)據(jù)科學(xué)問(wèn)題的不同方式!
11. Python中的機(jī)器學(xué)習(xí)
這是一個(gè)重要的主題,機(jī)器學(xué)習(xí)正在風(fēng)靡世界,是數(shù)據(jù)科學(xué)家工作的重要組成部分。
簡(jiǎn)而言之,機(jī)器學(xué)習(xí)是一組允許計(jì)算機(jī)將輸入數(shù)據(jù)映射到輸出數(shù)據(jù)的技術(shù)。有一些情況并非如此,但它們屬于少數(shù),以這種方式考慮ML通常很有幫助。
Python有兩個(gè)非常好的機(jī)器學(xué)習(xí)包。
(1) Scikit-Learn
在使用Python進(jìn)行機(jī)器學(xué)習(xí)的時(shí)候都會(huì)花大部分時(shí)間用于使用Scikit-Learn包(有時(shí)縮寫(xiě)為sklearn)。
這個(gè)包實(shí)現(xiàn)了一大堆機(jī)器學(xué)習(xí)算法,并通過(guò)一致的語(yǔ)法公開(kāi)它們。這使得數(shù)據(jù)科學(xué)家很容易充分利用每種算法。
使用Scikit-Learn的一般框架是這樣的——將數(shù)據(jù)集拆分為訓(xùn)練和測(cè)試數(shù)據(jù)集:
實(shí)例化并訓(xùn)練一個(gè)模型:
使用metrics模塊測(cè)試模型的工作情況:
(2) XGBoost
在Python中常用于機(jī)器學(xué)習(xí)的第二個(gè)包是XGBoost。
Scikit-Learn實(shí)現(xiàn)了一系列算法,XGBoost只實(shí)現(xiàn)了一個(gè)梯度提升的決策樹(shù)。
最近這個(gè)包(和算法)因其在Kaggle比賽(任何人都可以參加的在線數(shù)據(jù)科學(xué)比賽)上被使用而取得成功,變得非常受歡迎。
訓(xùn)練模型的工作方式與Scikit-Learn算法的工作方式大致相同。
12. Python中的深度學(xué)習(xí)
Scikit-Learn中提供的機(jī)器學(xué)習(xí)算法幾乎可以滿足任何問(wèn)題。話雖這么說(shuō),但有時(shí)你需要使用最先進(jìn)的算法。
由于使用它們的系統(tǒng)幾乎優(yōu)于其他所有類算法,因此深度神經(jīng)網(wǎng)絡(luò)的普及率急劇上升。
但是很難說(shuō)神經(jīng)網(wǎng)絡(luò)正在做什么以及它為什么這樣做。因此,它們?cè)诮鹑?、醫(yī)學(xué)、法律和相關(guān)專業(yè)中的使用并未得到廣泛認(rèn)可。
神經(jīng)網(wǎng)絡(luò)的兩大類是卷積神經(jīng)網(wǎng)絡(luò)(用于對(duì)圖像進(jìn)行分類并完成計(jì)算機(jī)視覺(jué)中的許多其他任務(wù))和循環(huán)神經(jīng)網(wǎng)絡(luò)(用于理解和生成文本)。
探索神經(jīng)網(wǎng)工作時(shí)超出了本文的范圍的機(jī)理,如果你想做這類工作,只要知道你需要尋找的包是TensorFlow(Google contibution!)還是Keras。
Keras本質(zhì)上是TensorFlow的包裝器,使其更易于使用。
大家在學(xué)python的時(shí)候肯定會(huì)遇到很多難題,以及對(duì)于新技術(shù)的追求,這里推薦一下我們的Python學(xué)習(xí)扣qun:784758214,這里是python學(xué)習(xí)者聚集地!
13. Python中的數(shù)據(jù)科學(xué)API
一旦訓(xùn)練了模型,就可以在其他軟件中訪問(wèn)它的預(yù)測(cè),方法是創(chuàng)建一個(gè)API。
API允許模型從外部源一次一行地接收數(shù)據(jù)并返回預(yù)測(cè)。因?yàn)镻ython是一種通用的編程語(yǔ)言,也可用于創(chuàng)建Web服務(wù),所以很容易使用Python通過(guò)API為模型提供服務(wù)。
如果需要構(gòu)建API,應(yīng)該查看pickle和Flask。Pickle允許訓(xùn)練有素的模型被保存在硬盤驅(qū)動(dòng)器上,以便以后使用。而Flask是創(chuàng)建Web服務(wù)的最簡(jiǎn)單方法。
14. Python中的Web應(yīng)用程序
最后,如果你想圍繞數(shù)據(jù)科學(xué)項(xiàng)目構(gòu)建功能齊全的Web應(yīng)用程序,則應(yīng)使用Django框架。
Django在Web開(kāi)發(fā)社區(qū)非常受歡迎,并且用于構(gòu)建Instagram和Pinterest的第一個(gè)版本(以及許多其他版本)。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://www.ezyhdfw.cn/yun/43918.html
摘要:曾經(jīng)霸主的下降最為嚴(yán)重,直接慘跌,跌落第,也持續(xù)跌落,前大語(yǔ)言中只有是保持正增勢(shì)的勢(shì)頭。時(shí)代的語(yǔ)言作為人工智能和大數(shù)據(jù)的支持語(yǔ)言,已經(jīng)成為頭牌語(yǔ)言。根據(jù)調(diào)查顯示,的企業(yè)在面臨擬定策略時(shí),常常無(wú)法獲得實(shí)時(shí)且有根據(jù)的決策信息。 妥妥的,作為編程界的老大,Python又一次霸榜了?。。?今年6月份,PYPL最新報(bào)告已經(jīng)出爐了,Python持續(xù)稱王的腳步已經(jīng)無(wú)人能阻止了!話不多說(shuō),我們來(lái)看報(bào)告...
摘要:曾經(jīng)霸主的下降最為嚴(yán)重,直接慘跌,跌落第,也持續(xù)跌落,前大語(yǔ)言中只有是保持正增勢(shì)的勢(shì)頭。時(shí)代的語(yǔ)言作為人工智能和大數(shù)據(jù)的支持語(yǔ)言,已經(jīng)成為頭牌語(yǔ)言。根據(jù)調(diào)查顯示,的企業(yè)在面臨擬定策略時(shí),常常無(wú)法獲得實(shí)時(shí)且有根據(jù)的決策信息。 妥妥的,作為編程界的老大,Python又一次霸榜了!?。?今年6月份,PYPL最新報(bào)告已經(jīng)出爐了,Python持續(xù)稱王的腳步已經(jīng)無(wú)人能阻止了!話不多說(shuō),我們來(lái)看報(bào)告...
摘要:研究人員和機(jī)器學(xué)習(xí)的作者對(duì)于數(shù)學(xué)和面向數(shù)據(jù)的人來(lái)說(shuō),非常容易使用。這對(duì)于機(jī)器學(xué)習(xí)和領(lǐng)域的工作是非常重要的。高級(jí)腳本語(yǔ)言非常適合人工智能和機(jī)器學(xué)習(xí),因?yàn)槲覀兛梢钥焖僖苿?dòng)并重試。 摘要: 為什么Python會(huì)在這股深度學(xué)習(xí)浪潮中成為編程語(yǔ)言的頭牌?聽(tīng)聽(tīng)大牛如何解釋吧! showImg(https://segmentfault.com/img/bV59KD?w=780&h=405); 1.P...
摘要:研究人員和機(jī)器學(xué)習(xí)的作者對(duì)于數(shù)學(xué)和面向數(shù)據(jù)的人來(lái)說(shuō),非常容易使用。這對(duì)于機(jī)器學(xué)習(xí)和領(lǐng)域的工作是非常重要的。高級(jí)腳本語(yǔ)言非常適合人工智能和機(jī)器學(xué)習(xí),因?yàn)槲覀兛梢钥焖僖苿?dòng)并重試。 摘要: 為什么Python會(huì)在這股深度學(xué)習(xí)浪潮中成為編程語(yǔ)言的頭牌?聽(tīng)聽(tīng)大牛如何解釋吧! showImg(https://segmentfault.com/img/bV59KD?w=780&h=405); 1.P...
閱讀 3294·2021-09-22 15:05
閱讀 2851·2019-08-30 15:56
閱讀 1120·2019-08-29 17:09
閱讀 860·2019-08-29 15:12
閱讀 2138·2019-08-26 11:55
閱讀 3218·2019-08-26 11:52
閱讀 3428·2019-08-26 10:29
閱讀 1425·2019-08-23 17:19