網(wǎng)站性能檢測評分
注:本網(wǎng)站頁面html檢測工具掃描網(wǎng)站中存在的基本問題,僅供參考。
統(tǒng)計學(xué)python
手把手 | 數(shù)據(jù)科學(xué)速成課:給Python新手的實操指南 新手視頻課程
大數(shù)據(jù)文摘作品
編譯:王夢澤、丁慧、笪潔瓊、Aileen
數(shù)據(jù)科學(xué)團(tuán)隊在持續(xù)穩(wěn)定的發(fā)展壯大,這也意味著經(jīng)常會有新的數(shù)據(jù)科學(xué)家和實習(xí)生加入團(tuán)隊。我們聘用的每個數(shù)據(jù)科學(xué)家都具有不同的技能,但他們都具備較強的分析背景和在真正的業(yè)務(wù)案例中運用此背景的能力。例如,團(tuán)隊中大多數(shù)人都曾研究計量經(jīng)濟(jì)學(xué),這為概率論及統(tǒng)計學(xué)提供了堅實的基礎(chǔ)。
典型的數(shù)據(jù)科學(xué)家需要處理大量的數(shù)據(jù),因此良好的編程技能是必不可少的。然而,我們的新數(shù)據(jù)科學(xué)家的背景往往是各不相同的。編程環(huán)境五花八門,因此新的數(shù)據(jù)科學(xué)家的編程語言背景涵蓋了R, MatLab, Java, Python, STATA, SPSS, SAS, SQL, Delphi, PHP to C# 和 C++。了解許多不同的編程語言在有些時候確實很有必要,然而我們更希望使用一種編程語言來完成大多數(shù)的項目,這樣我們可以在項目上更容易的進(jìn)行合作。由于無人知曉一切,一種首選的編程語言讓我們有機(jī)會互相學(xué)習(xí)。
我們公司更傾向于使用Python。在開源社區(qū)的大力支持下,Python已經(jīng)成為了處理數(shù)據(jù)科學(xué)強有力的工具。Python容易使用的語法,強大的數(shù)據(jù)處理能力和極好的開源統(tǒng)計庫,例如Numpy, Pandas, Scikit-learn, Statsmodels等,使我們可以完成各種各樣的任務(wù),范圍從探索性分析到構(gòu)建可伸縮的大數(shù)據(jù)管道和機(jī)器學(xué)習(xí)算法。只有對那些較寬松的統(tǒng)計模型我們有時會將Python和R結(jié)合使用,其中Python執(zhí)行大量的數(shù)據(jù)處理工作和R進(jìn)行統(tǒng)計建模。
我的理念是通過實踐來學(xué)習(xí),因此為了幫助新數(shù)據(jù)科學(xué)家使用Python進(jìn)行數(shù)據(jù)科學(xué)研究,我們創(chuàng)建了Python數(shù)據(jù)科學(xué)(速成)課(Python Data Science (Crash) Course)。這門課的目標(biāo)是使我們的新員工(也包括其他部門的同事)以互動的方式和自己的節(jié)奏來學(xué)習(xí)解決實際的業(yè)務(wù)問題。與此同時,更有經(jīng)驗的數(shù)據(jù)科學(xué)家可以回答任何問題,但也不要小看從StackOverflow或者圖書館的文檔中尋找答案的的技能,我們也當(dāng)然愿意向新數(shù)據(jù)科學(xué)家傳授這項技能!
在文章中,我們會按階段來介紹這個實踐課程。
階段一:學(xué)習(xí)Python的基礎(chǔ)知識
顯而易見,第一步是學(xué)習(xí)Python這個軟件,即學(xué)習(xí)Python語法及基本操作。幸運的是,如果你能處理好代碼縮進(jìn)的話,Python語法就不沒那么難了。我在使用Java編程語言時無需考慮注意縮進(jìn)問題,然而當(dāng)我之后開始使用Python時在縮進(jìn)上容易出錯。
因此,如何開始學(xué)習(xí)Python?由于我們更喜歡通過實踐來學(xué)習(xí)的方式,所以我們總是讓新員工從Codecademy Python課程開始。Codecademy提供了交互式的Python課程體驗,無需擔(dān)心安裝軟件會麻煩,可以在瀏覽器中直接學(xué)習(xí)使用Python。
Codecademy Python課程用時大約13個小時,完成之后,你應(yīng)該能夠在Python中進(jìn)行簡單的操作。
提示:數(shù)據(jù)科學(xué)家還可以在Codecademy上學(xué)習(xí)SQL,這門課程也十分重要。
階段二:在Anaconda環(huán)境下本地安裝Python
在結(jié)束了Codecademy課程后,我們顯然會想去開始編寫自己的代碼,然而因為我們不繼續(xù)在瀏覽器中運行Python,需要在我們本地電腦上安裝Python。
Python是開源的,并可通過python.org.免費下載。然而官方版本只包含了標(biāo)準(zhǔn)的Python庫,標(biāo)準(zhǔn)庫中包含文本文件、日期時間和基本算術(shù)運算之類的函數(shù)。Python標(biāo)準(zhǔn)庫不夠全面,無法進(jìn)行多樣化的數(shù)據(jù)科學(xué)分析,但開源社區(qū)已經(jīng)創(chuàng)建出了很棒的庫來擴(kuò)展Python的功能,使其能夠進(jìn)行數(shù)據(jù)科學(xué)研究。
為了避免單獨下載安裝所有的庫,我建議使用Anaconda Python發(fā)行版。Anaconda實際上是與大量的庫結(jié)合在一起的Python,因此你不需要手動安裝它們。此外,Anaconda附帶了一個簡單的命令行工具,在必要時安裝新的或更新現(xiàn)有的庫。
提示:盡管默認(rèn)情況下Anaconda幾乎涵蓋了所有很棒的庫,但還有一些沒有包含在內(nèi)。你可以通過conda install package_name or pip install package_name語句來安裝新的包。例如,我們經(jīng)常在項目中使用進(jìn)度條庫 tqdm。因此,我們需要先執(zhí)行pip install tqdm語句來完成Anaconda的新安裝。
階段三:使用PyCharm進(jìn)行簡單的編碼
安裝了Python之后,我們可以在本地電腦上運行Python代碼。打開編輯器寫下Python代碼,打開命令行并運行新創(chuàng)建的Python文件,路徑為python C:\Users\thom\new_file.py。
為了使事情變得簡單一些,我更喜歡在Pychanm環(huán)境中編寫Python代碼。PyCharm是一種所謂的集成開發(fā)環(huán)境,對開發(fā)人員編寫代碼時提供支持。它可以處理常規(guī)任務(wù),例如通過提供一個簡單的運行腳本按鈕來運行程序,此外它還可以通過提供自動完成功能和實時錯誤檢查來提高效率。如果忘記了某處的空格或使用了未被定義的變量名稱,PyCharm會發(fā)出警告提示。想要使用版本控制系統(tǒng)例如Git來進(jìn)行項目合作?PyCharm會幫助你。不管怎樣,使用Pycham可以在編寫Python程序時節(jié)省大量的時間,charm名副其實。
階段四:解決一個模擬的業(yè)務(wù)問題
定義研究的問題
假設(shè)現(xiàn)在經(jīng)理提出了一個他面對的業(yè)務(wù)問題,他希望能夠預(yù)測用戶在公司網(wǎng)站上進(jìn)行首次點擊/參與(例如訂閱簡報)的概率。在給出了一些想法后,我們提出可以基于用戶的頁面瀏覽量來預(yù)測訂閱轉(zhuǎn)換概率,此外,你構(gòu)建了以下假設(shè):更多的頁面瀏覽量會導(dǎo)致用戶首次訂閱的概率增大。
為了檢驗假設(shè)是否成立,我們需要從網(wǎng)絡(luò)分析師處獲得兩個數(shù)據(jù)集:
Session數(shù)據(jù)集 包含所有用戶的所有頁面瀏覽量。
1. user_id: 用戶標(biāo)識符
2. session_number: 會話數(shù)量(升序排列)
3. session_start_date: 會話的開始日期時間
4. unix_timestamp: 會話的開始unix時間標(biāo)記
5. campaign_id: 將用戶帶到網(wǎng)站的活動的ID
6. domain: 用戶在會話中訪問的(子)域
7. entry: 會話的進(jìn)入頁面
8. referral: 推薦網(wǎng)站,例如:google
9. pageviews: 會話期間的頁面訪問量
10. transactions: 會話期間的交易量
Engagement數(shù)據(jù)集 包含所有用戶的所有參與活動。
1. user_id:唯一的用戶標(biāo)識符
2. site_id: 產(chǎn)生參與活動的網(wǎng)站ID
3. engagement_unix_timestamp: 發(fā)生參與活動的unix時間標(biāo)記
4. engagement_type: 參與活動的類型,例如訂閱簡報
5. custom_properties: 參與活動的其他屬性
不幸的是,我們有兩個單獨的數(shù)據(jù)集,因為它們來自不同的系統(tǒng)。然而,兩個數(shù)據(jù)集可以通過唯一用戶標(biāo)識符user_id來匹配。我已經(jīng)在GitHub上放置了我用來解決業(yè)務(wù)問題的最終代碼 ,然而我強烈建議你僅在自己解決了這個問題后再去查看代碼。此外,你還可以找到創(chuàng)建兩個虛構(gòu)數(shù)據(jù)集的代碼。
代碼鏈接:
https://github/thomhopmans/themarketingtechnologist/tree/master/7_data_science_in_python
使用Pandas進(jìn)行簡單的數(shù)據(jù)處理
無論我們應(yīng)用任何統(tǒng)計模型解決問題,都需要預(yù)先清洗和處理數(shù)據(jù)。例如,我們需要為會話數(shù)據(jù)集中的每個用戶找到其首次活動的數(shù)據(jù)(如果有的話)。這就要求在user_id上加入兩個數(shù)據(jù)集,并刪除首次活動后的其他所有活動數(shù)據(jù)。
Codecademy Python課程已經(jīng)告訴你如何逐行閱讀文本文件。Python非常適合數(shù)據(jù)管理和預(yù)處理,但不適用于數(shù)據(jù)分析和建模。
Python的Pandas庫克服了這個問題。Pandas提供了(數(shù)值)表和時間序列的數(shù)據(jù)結(jié)構(gòu)和操作。因此,Pandas讓Python數(shù)據(jù)科學(xué)工作變得更加簡單!
使用pd.read_csv()讀取數(shù)據(jù)集
我們的Python代碼中的第一步是加載Python中的兩個數(shù)據(jù)集。Pandas提供了一個簡單易用的函數(shù)來讀取.csv文件:read_csv()。本著學(xué)習(xí)的原則,我們建議您自己找出如何讀取這兩個數(shù)據(jù)集。最后,你應(yīng)該建立兩個獨立的DataFrames,每個數(shù)據(jù)集都需要有一個。
小貼士:在這兩個文件中,我們都有不同的分隔符。此外,請務(wù)必查看read_csv()中的date_parser選項,將UNIX時間標(biāo)記轉(zhuǎn)換為正常的日期時間格式。
過濾無用數(shù)據(jù)
任何(大)數(shù)據(jù)問題中的下一步是減少問題規(guī)模的大小。在我們的例子中,有很多與我們問題無關(guān)的列,例如會話的媒介/來源。因此,我們在Dataframes上應(yīng)用索引和選擇只保留相關(guān)的列,比如user_id(必需加入這兩個DataFrames),每個會話和活動的日期(在此之前搜索首次活動和會話)以及頁面訪問量(假設(shè)驗證的必要條件)。
另外,我們會篩選出DataFrame中所有非首次的活動。可以通過查找每個user_id的最早日期來完成。具體怎樣做呢?使用GroupBy:split-apply-combine邏輯!
Pandas最強大的操作之一是合并,連接和序列化表格。它允許我們執(zhí)行任何從簡單的左連接和合并到復(fù)雜的外部連接。因此,可根據(jù)用戶的唯一標(biāo)識符結(jié)合會話和首次活動的DataFrames。
刪除首次活動后的所有會話
在上一步中使用簡單的合并,我們?yōu)槊總€會話添加了首次活動的時間標(biāo)記。通過比較會話時間標(biāo)記與首次活動時間標(biāo)記,你應(yīng)該能夠過濾掉無用的數(shù)據(jù)并縮小問題的規(guī)模。
添加因變量y:參與/訂閱活動轉(zhuǎn)換
如上所述,我們希望預(yù)測頁面訪問量對轉(zhuǎn)換(即首次活動)概率的影響。因此,我們的因變量y是一個二進(jìn)制變量,用它表示會話內(nèi)是否發(fā)生了轉(zhuǎn)換。由于我們做了上面的過濾(即在首次活動后刪除所有非首次活動和會話),所以這種轉(zhuǎn)換按照定義在每個用戶的最近一次會話中進(jìn)行。同樣,使用GroupBy:split-apply-combine邏輯,我們可以創(chuàng)建一個包含觀察值的新列,如果它是用戶的最后一個會話,觀察值將為1,否則為0。
添加自變量X:訪問量的累計總和
我們的自變量是頁面訪問量。但是,我們不能簡單地將會話中的頁面訪問量計算在內(nèi),因為早期會話中的頁面訪問會影響轉(zhuǎn)換概率。因此,我們創(chuàng)建一個新的列,用來計算用戶頁面訪問量的累計總和。這才是我們的自變量X。
使用StatsModels擬合邏輯回歸
通過Pandas庫我們最終得到了一個包含單個離散X列和單個二進(jìn)制Y列的小型DataFrame。并用(二元)邏輯回歸模型來估計基于一個或多個獨立變量的因變量的二元響應(yīng)概率。StatsModels是Python的統(tǒng)計和計量經(jīng)濟(jì)學(xué)庫,提供了參數(shù)估計和統(tǒng)計測試工具。因此,它包含邏輯回歸函數(shù)也就不足為奇了。那么,如何通過StatsModels來擬合邏輯回歸模型呢?請自行百度...
技巧1:不要忘記給邏輯回歸添加一個常數(shù)。
技巧2:另一個非常棒的擬合統(tǒng)計模型(如邏輯回歸)庫是scikit-learn。
使用Matplotlib或Seaborn進(jìn)行可視化
在擬合邏輯回歸模型之后,我們可以預(yù)測每個累計訪問量的轉(zhuǎn)換概率。但是,我們不能僅僅通過交付一些原始數(shù)據(jù)來將我們最新發(fā)現(xiàn)的結(jié)果傳達(dá)給管理層。因此,數(shù)據(jù)科學(xué)家的重要任務(wù)之一就是要清晰有效地展示他的成果。在大多數(shù)情況下,這意味著提供我們的可視化結(jié)果,因為眾所周知,一圖勝千言...
Python包含幾個非常棒的可視化庫,其中MatplotLib是最知名的。而Seaborn是建立在MatplotLib上的另一個很棒的庫。
MatplotLib的語法大概是以前使用過MatLab的用戶所熟知的。但是,我們傾向選擇Seaborn,是因為它提供更漂亮的圖表而且外觀很重要。
我們通過Seaborn得到了模型擬合的可視化結(jié)果,如下所示:
我們可以很好地利用這個可視化結(jié)果來證明我們的假設(shè)是否成立。
驗證假設(shè)
最后一步是就驗證我們提出的假設(shè)是否成立?;叵胍幌?,我們認(rèn)為更多的網(wǎng)頁訪問量導(dǎo)致首次活動的可能性更高。
首先,我們從以前的可視化結(jié)果中可以看出,假設(shè)是成立的。不然,預(yù)測的概率也不會單調(diào)遞增。盡管如此,我們還是可以從擬合的模型總結(jié)中得出同樣的結(jié)論,如下所示。
Logit Regression Results ==============================================================================Dep. Variable: is_conversion No. Observations: 12420Model: Logit Df Residuals: 12418Method: MLE Df Model: 1Date: Tue, 27 Sep 2016 Pseudo R-squ.: 0.3207Time: 21:44:57 Log-Likelihood: -5057.6converged: True LL-Null: -7445.5 LLR p-value: 0.000==================================================================================== coef std err z P>|z| [95.0% Conf. Int.]------------------------------------------------------------------------------------const -3.8989 0.066 -59.459 0.000 -4.027 -3.770pageviews_cumsum 0.2069 0.004 52.749 0.000 0.199 0.215====================================================================================
我們看到,統(tǒng)計結(jié)果中,pagesviews_cumsum系數(shù)在顯著性水平為1%時顯示為正。因此,這足以表明我們的假設(shè)成立,加油!此外,您剛剛已經(jīng)完成了第一個Python數(shù)據(jù)科學(xué)分析工作!:)
是不是感覺很棒?快上手試試吧!
原文鏈接:
https://themarketingtech...
2017年最流行的十大Python庫 企業(yè)視頻課程
年末是你需要思考過去一年的成就的時候。對于程序員來說,這通常是回顧今年發(fā)布的或者最近流行的開源庫,因為它們是解決特定問題的絕佳工具。
在過去的兩個多年中,我們都會在博客中選取我們認(rèn)為在Python社區(qū)最有用的庫。今年也是如此。
這一次,這份列表基本都是機(jī)器學(xué)習(xí)(ML)的庫。請非ML庫的作者而且能夠諒解,這都怪我們的偏見。希望在讀到本文的人能評論并提出一些被我們忽略的偉大的庫幫助我們矯正它。
那么,讓我們開始盤點吧!
1. Pipenv
鏈接:https://github/pypa/pipenv
我們?yōu)榻衲昴瓿醢l(fā)布的這個工具排到榜首,它有能力影響每個Python開發(fā)者的工作流程,它已經(jīng)成為Python管理依賴項的官方推薦工具。
https://packaging.python.org/tutorials/managing-dependencies/#installing-pipenv
Pipenv最初是由Kenneth Reitz創(chuàng)立的一個周末項目,旨在將其他包管理者(如npm或yarn)的創(chuàng)意帶入Python中。不再去安裝virtualenv,virtualenvwrapper,管理requirements.txt文件,并確保對依賴項的依賴版本的再現(xiàn)性(https://kennethreitz.org/essays/a-better-pip-workflow)。使用Pipenv,你可以在Pipfile中指定所有的依賴關(guān)系(通常使用命令添加,刪除或更新依賴關(guān)系)。該工具可以生成一個Pipfile.lock文件,使你的構(gòu)建deterministic,幫助你避免那些因為你不知道是否需要的模糊依賴產(chǎn)生的難以捕捉的bug。
當(dāng)然,Pipenv還有很多其他的特性,并且它的文檔非常好,所以一定要看一下,并且在你所有的Python項目中使用它,就像我們在Tryolabs中做的那樣。
2. PyTorch
鏈接:http://pytorch.org/
說到今年流行,尤其是在深度學(xué)習(xí)(DL)社區(qū)流行的庫,那就要提到今年Facebook推出的DL框架PyTorch。
PyTorch構(gòu)建并改進(jìn)了流行的Torch框架,與Lua不同它是基于Python的。由于最近幾年人們大多轉(zhuǎn)向使用Python進(jìn)行數(shù)據(jù)科學(xué)研究,它是讓DL更容易接近的重要一步。
最值得注意的是,PyTorch已經(jīng)成為眾多研究人員的首選框架之一,因為它實現(xiàn)了動態(tài)計算圖(Dynamic Computational Graph)范式。當(dāng)使用TensorFlow,CNTK或MXNet等其他框架編寫代碼時,必須首先定義計算圖。該圖指定了我們的代碼運行的所有操作,這些操作稍后會被編譯并可能被框架優(yōu)化,以便能夠在GPU上并行運行得更快。這個范式被稱為靜態(tài)計算圖,因為你可以利用各種優(yōu)化,而且這個圖形一旦建成,就有可能運行在不同的設(shè)備上(因為執(zhí)行與構(gòu)建分離)。然而,在自然語言處理等許多任務(wù)中,工作的量通常是可變的:在將圖像提供給算法之前,可以將圖像調(diào)整為固定的分辨率,但不能對可變長度的句子進(jìn)行相同的處理。這是PyTorch和動態(tài)圖的亮點,通過在代碼中使用標(biāo)準(zhǔn)的Python控制指令,圖在執(zhí)行時被定義,給了你很多這對于一些任務(wù)來說必不可少的自由。
當(dāng)然,PyTorch也為你計算梯度(就像你期望從任何現(xiàn)代的DL框架中獲得的那樣),速度非???,而且是可擴(kuò)展的,所以為什么不試試呢?
3. caffe2
鏈接:https://caffe2.ai/
這可能聽起來很瘋狂,但Facebook今年也發(fā)布了另一個很棒的DL框架。
原來的Caffe框架已被大眾使用多年,以無與倫比的性能和久經(jīng)考驗的代碼庫而聞名。然而,最近DL的趨勢使這個框架在某些方面停滯不前。Caffe2是將Caffe帶入“現(xiàn)代世界”的嘗試。
它支持分布式訓(xùn)練,部署(即使在移動平臺上),最新的CPU并且支持CUDA的硬件。雖然PyTorch可能更適合研究,但Caffe2適合在Facebook上看到的大規(guī)模部署。
另外,請看看近期的ONNX。你可以在PyTorch中構(gòu)建和訓(xùn)練模型,同時使用Caffe2進(jìn)行部署!
4. Pendulum
鏈接:https://github/sdispater/pendulum
去年,Arrow被列入榜單,它旨在通過使用Python的datetime讓你生活輕松一些。而今年,我們輪到Pendulum了。
Pendulum的優(yōu)點之一是它是Python標(biāo)準(zhǔn)datetime類嵌入式的替代品,因此可以輕松地將其與現(xiàn)有代碼集成,并且只有在實際需要時才使用它的功能。者已經(jīng)特別注意確保正確地處理時區(qū),默認(rèn)每個實例的timezone-aware和UTC。你也將得到一個擴(kuò)展timedelta,使datetime算法更簡單。
與其他現(xiàn)有的庫不同,它努力使API具有可預(yù)測的行為,所以你知道會發(fā)生什么。如果你正在做任何與datetimes有關(guān)的重要工作,這會讓你更快樂?。ú榭锤啵篽ttps://pendulum.eustace.io/docs/)。
5. Dash
https://plot.ly/products/dash/
如果你正在做數(shù)據(jù)科學(xué),你會使用Python生態(tài)系統(tǒng)中的優(yōu)秀工具,比如Pandas和scikit-learn。并在工作流程使用Jupyter Notebooks,這對你和你的同事來說非常棒。但是,你如何與那些不知道如何使用這些工具的人分享這項工作呢?你如何建立一個界面,使人們可以輕松地使用數(shù)據(jù),可視化過程?過去,你需要一個前端團(tuán)隊,用Javascript知識來構(gòu)建這些GUI。但現(xiàn)在不用了。
今年宣布的Dash是一個用于構(gòu)建Web應(yīng)用程序的Python開源庫,尤其是那些充分利用數(shù)據(jù)可視化的Web應(yīng)用程序。它建立在Flask,Plotly.js和React的基礎(chǔ)上,并提供了抽象,使你不必學(xué)習(xí)這些框架,更高效的研發(fā)。這些應(yīng)用程序可以在瀏覽器中呈現(xiàn)并響應(yīng),因此在移動設(shè)備中也能使用。
了解更多關(guān)于Dash:https://plot.ly/dash/gallery
6.PyFlux
Python中有許多庫用來做數(shù)據(jù)科學(xué)和ML,但是當(dāng)你的數(shù)據(jù)點是隨著時間的推移而變化的度量(例如股票價格,從儀表中獲得的度量等等)時,這樣的庫就很少了。
PyFlux是一個專門為時間序列而開發(fā)的 Python開源庫。時間序列研究是統(tǒng)計學(xué)和計量經(jīng)濟(jì)學(xué)的一個分支,目標(biāo)可以描述時間序列的表現(xiàn)(依據(jù)隱藏組件或特征),也能預(yù)測時間序列未來的表現(xiàn)。
PyFlux允許用于時間序列建模的概率方法,并且已經(jīng)實現(xiàn)了幾個像GARCH這樣的現(xiàn)代時間序列模型。
7.Fire
https://github/google/python-fire
通常情況下,你需要為自己的項目制作命令行界面(CLI)。除了傳統(tǒng)的argparse,Python中還有click或docopt可用。谷歌今年宣布的Fire,在解決同樣的問題上提出了不同的方法。
Fire是一個開源的庫,可以為任何Python項目自動生成一個CLI。沒錯,是自動的:你幾乎不需要編寫任何代碼或文檔來構(gòu)建你的CLI!想完成你的CLI,只需要調(diào)用一個Fire方法并把它傳遞給一個CLI:一個函數(shù),一個對象,一個類,一個字典,甚至你可以不傳遞任何參數(shù)(這會將你的整個代碼轉(zhuǎn)換為一個CLI)。這個庫可以為你節(jié)省很多時間。
8.imbalanced-learn
https://github/scikit-learn-contrib/imbalanced-learn
在一個完美世界的里,我們會有完美平衡的數(shù)據(jù)集,我們將它們都拿來將訓(xùn)練模型,多么美好??上КF(xiàn)實世界不是這樣的,某些任務(wù)更傾向于不平衡的數(shù)據(jù)。例如,在預(yù)測信用卡交易中的欺詐行為時,你會預(yù)測絕大多數(shù)交易(+ 99.9%)實際上是合法的。如果我們簡單的訓(xùn)練ML算法會出現(xiàn)令人沮喪的性能,所以在處理這些類型的數(shù)據(jù)集時需要特別小心。
幸運的是,這是一個已經(jīng)被研究過的問題,存在各種各樣解決的技術(shù)。Imbalanced-learn是一個Python包,它提供了關(guān)于這些技術(shù)的實現(xiàn)。它與scikit-learn兼容,是scikit-learn-contrib項目的一部分。
9. FlashText
https://github/vi3k6i5/flashtext
如果您需要搜索某些文本并將其替換為其他內(nèi)容(如大多數(shù)數(shù)據(jù)清理工作),則通常將其轉(zhuǎn)為正則表達(dá)式。他們能很好地完成這項工作,但是有時會發(fā)生這樣的情況:需要搜索的數(shù)以千計的內(nèi)容,正則表達(dá)式可能會非常緩慢。
為此,F(xiàn)lashText是一個更好的選擇。它使整個操作的運行時間大大提高了。FlashText的優(yōu)點在于無論搜索條件有多少,運行時都是一樣的,而正則表達(dá)式中運行時幾乎是隨著條件數(shù)呈線性增長。
FlashText證明了算法和數(shù)據(jù)結(jié)構(gòu)設(shè)計的重要性,即使對于簡單的問題,更好的算法也可以很容易地勝過最快的cpu運行簡單的實現(xiàn)。
10. Luminoth
https://luminoth.ai/
現(xiàn)在,圖像無處不在,理解它的內(nèi)容對于許多應(yīng)用程序來說至關(guān)重要。值得慶幸的是,由于DL的進(jìn)步,圖像處理技術(shù)已經(jīng)進(jìn)步了很多。
Luminoth是一個使用TensorFlow和Sonnet構(gòu)建的用于計算機(jī)視覺的開源Python工具包。目前,它可以支持以Faster R-CNN模型的形式進(jìn)行對象檢測。
但是Luminoth不僅是一個特定模型的實現(xiàn)。它是被構(gòu)建為模塊化和可擴(kuò)展,所以可以直接定制現(xiàn)有的部分或者將其擴(kuò)展為新的模型來處理不同的問題,盡可能多地復(fù)用代碼。它提供的工具可以輕松完成構(gòu)建DL模型所需的工程工作:將數(shù)據(jù)(在本例中為圖像)轉(zhuǎn)換合適的格式輸送到數(shù)據(jù)管道(TensorFlow的tfrecords)中,執(zhí)行數(shù)據(jù)增強,在一個或多個gpu上運行訓(xùn)練(使用大型數(shù)據(jù)集時必須進(jìn)行分布式培訓(xùn)),運行評估度量,輕松地在TensorBoard中可視化 并用簡單的API或瀏覽器界面部署訓(xùn)練號的模型,以便人們使用。
此外,Luminoth直接與Google Cloud的ML Engine集成,所以即使你沒有強大的GPU,也可以使用命令在云端進(jìn)行訓(xùn)練。
本文為編譯文章,轉(zhuǎn)載請注明出處。
來源:atyun_com
來源網(wǎng)址:http://atyun/13563_2017最流行的十大python庫.html