摘要:機器學習由于數據量較大,技術已成為必要。以下腳本演示了世界銀行數據的線性回歸實用程序和緩存下載程序省略了水印和繪圖標簽的代碼代碼應顯示以下圖像該計劃下載年世界銀行數據,并將嬰兒死亡率與人均進行對比。
來源 | 愿碼(ChainDesk.CN)內容編輯
愿碼Slogan | 連接每個程序員的故事
網站 | http://chaindesk.cn
愿碼愿景 | 打造全學科IT系統免費課程,助力小白用戶、初級工程師0成本免費系統學習、低成本進階,幫助BAT一線資深工程師成長并利用自身優勢創造睡后收入。
官方公眾號 | 愿碼 | 愿碼服務號 | 區塊鏈部落
免費加入愿碼全思維工程師社群 | 任一公眾號回復“愿碼”兩個字獲取入群二維碼
本文閱讀時長:13min
本文包含以下部分:
數據分析,數據科學,大數據
Python的數據分析簡史
dautil的高級概述
IPython筆記本實用程序
下載數據
繪制實用程序
揭開Docker的神秘面紗
數據分析,數據科學,大數據您可能已經看到維恩圖將數據科學描述為數學/統計學,計算機科學和領域專業知識的交集。數據分析是永恒的,并且在數據科學和計算機科學之前存在。您可以使用筆和紙進行數據分析,并在更現代的時候使用袖珍計算器進行數據分析。
數據分析涉及許多方面,例如做出決策或提出新的假設和問題。圍繞數據科學和大數據的炒作,狀態和經濟回報讓我想起了數據倉庫和商業智能成為流行語的時間。商業智能和數據倉庫的最終目標是構建管理儀表板。這涉及很多政治和組織方面,但在技術方面,主要是關于數據庫。另一方面,數據科學不是以數據庫為中心的,而是在很大程度上依賴于機器學習。機器學習由于數據量較大,技術已成為必要。數據增長是由世界人口的增長和社交媒體和移動設備等新技術的興起引起的。實際上,數據增長可能是我們可以確定的唯一趨勢。構建儀表板和應用機器學習之間的區別與搜索引擎的演變方式類似。
搜索引擎最初只不過是手工創建的組織良好的鏈接集合。最終,自動化方法獲勝。由于將及時創建更多數據(而不是銷毀),我們可以預期自動數據分析會增加。
Python的數據分析簡史1989年:Guido van Rossum在荷蘭的CWI實施了第一個Python版本,作為圣誕節愛好項目。
1995年:Jim Hugunin創建了NumPy的前身Numeric。
1999年:Pearu Peterson將f2py描述為Fortran和Python之間的橋梁。
2000:Python 2.0發布。
2001:SciPy庫發布。此外,還創建了Numarray,一個競爭的數字庫。費爾南多佩雷斯發布了IPython,這是一個下午的黑客攻擊。NLTK作為一個研究項目發布。
2002年:John Hunter創建了matplotlib庫。
2005年:NumPy由Travis Oliphant發布。最初,NumPy是Numeric擴展,其功能受到Numarray的啟發。
2006:NumPy 1.0發布。SQLAlchemy的第一個版本發布了。
2007年:scikit-learn項目由David Cournapeau發起為Google Summer of Code項目。Cython是從Pyrex分叉的。Cython后來被大量用于熊貓和scikit-學習以提高性能。
2008年:Wes McKinney開始研究Pandas。Python 3.0發布了。
2011:IPython 0.12版本引入了IPython筆記本。Packt發布了NumPy 1.5初學者指南。
2012年:Packt發布了NumPy Cookbook。
2013:Packt發布NumPy初學者指南 - 第二版。
2014年:Fernando Perez宣布Project Jupyter,旨在打造一款與語言無關的筆記本電腦。Packt發布了學習NumPy數組和Python數據分析。
2015:Packt發布NumPy初學者指南 - 第三版和NumPy Cookbook - 第二版。
dautil的高級概述dautil模塊總結在下表中:
模 | 描述 | LOC |
---|---|---|
dautil.collect | 包含與集合相關的實用程序 | 331 |
dautil.conf | 包含配置實用程序 | 48 |
dautil.data | 包含用于下載和加載數據的實用程序 | 468 |
dautil.db | 包含與數據庫相關的實用程序 | 98 |
dautil.log_api | 包含日志實用程序 | 204 |
dautil.nb | 包含IPython / Jupyter筆記本小部件和實用程序 | 609 |
dautil.options | 配置與數據分析相關的多個庫的動態選項 | 71 |
dautil.perf | 包含與性能相關的實用程序 | 162 |
dautil.plotting | 包含繪圖實用程序 | 382 |
dautil.report | 包含報告實用程序 | 232 |
dautil.stats | 包含統計函數和實用程序 | 366 |
dautil.ts | 包含時間序列和日期的實用程序 | 217 |
dautil.web | 包含用于Web挖掘和HTML處理的實用程序 | 47 |
IPython筆記本已成為數據分析的標準工具。該dautil.nb有幾個互動IPython的小部件,以幫助乳膠渲染,matplotlib屬性的設置,和繪圖。Ivan定義了一個Context類,它表示小部件的配置設置。這些設置存儲在當前工作目錄中名為dautil.json的漂亮打印的JSON文件中。這可以擴展,甚至可以使用數據庫后端。以下是一個示例dautil.json的編輯摘錄(因此它不占用大量空間):
{ ... "calculating_moments": { "figure.figsize": [ 10.4, 7.7 ], "font.size": 11.2 }, "calculating_moments.latex": [ 1, 2, 3, 4, 5, 6, 7 ], "launching_futures": { "figure.figsize": [ 11.5, 8.5 ] }, "launching_futures.labels": [ [ {}, { "legend": "loc=best", "title": "Distribution of Means" } ], [ { "legend": "loc=best", "title": "Distribution of Standard Deviation" }, { "legend": "loc=best", "title": "Distribution of Skewness" } ] ], ... }
?Context對象可以使用字符串構建 - Ivan建議使用筆記本的名稱,但任何唯一標識符都可以。該dautil.nb.LatexRenderer還使用了Context類。它是一個實用程序類,可幫助您在IPython / Jupyter筆記本中編號和渲染Latex方程式,例如,如下所示:
import dautil as dl lr = dl.nb.LatexRenderer(chapter=12, context=context) lr.render(r"delta! = x - m") lr.render(r"m" = m + frac{delta}{n}") lr.render(r"M_2" = M_2 + delta^2 frac{ n-1}{n}") lr.render(r"M_3" = M_3 + delta^3 frac{ (n - 1) (n - 2)}{n^2}/ - frac{3delta M_2}{n}") lr.render(r"M_4" = M_4 + frac{delta^4 (n - 1) / (n^2 - 3n + 3)}{n^3} + frac{6delta^2 M_2}/ {n^2} - frac{4delta M_3}{n}") lr.render(r"g_1 = frac{sqrt{n} M_3}{M_2^{3/2}}") lr.render(r"g_2 = frac{n M_4}{M_2^2}-3.")
結果如下:
您可能會發現有用的另一個小部件是RcWidget,它設置matplotlib設置,如以下屏幕截圖所示:
下載數據有時,我們需要樣本數據來測試算法或原型可視化。在dautil.data模塊中,您將找到許多用于數據檢索的實用程序。模塊中的一些實用程序在現有的pandas函數之上添加了一個緩存層,例如從世界銀行和Yahoo!下載數據的pandas函數。您還可以獲取音頻,人口統計,Facebook和營銷數據。
數據存儲在特殊數據目錄下,該目錄取決于操作系統。以下示例代碼從SPAN Facebook數據集加載數據并計算clique數:
import networkx as nx import dautil as dl fb_file = dl.data.SPANFB().load() G = nx.read_edgelist(fb_file, create_using=nx.Graph(), nodetype=int) print("Graph Clique Number", nx.graph_clique_number(G.subgraph(list(range(2048)))))繪制實用程序
Ivan在書中經常可視化數據。繪圖有助于我們了解數據的結構,并幫助您形成假設或研究問題。通常,我們想要繪制多個變量,但我們希望很容易看出它是什么。matplotlib中的標準解決方案是循環顏色。但是,Ivan更喜歡循環線寬和線條樣式。以下單元測試演示了他對此問題的解決方案:
def test_cycle_plotter_plot(self): m_ax = Mock() cp = plotting.CyclePlotter(m_ax) cp.plot([0], [0]) m_ax.plot.assert_called_with([0], [0], "-", lw=1) cp.plot([0], [1]) m_ax.plot.assert_called_with([0], [1], "--", lw=2) cp.plot([1], [0]) m_ax.plot.assert_called_with([1], [0], "-.", lw=1)
該dautil.plotting模塊目前也有次要情節,直方圖,回歸圖使用的輔助工具,并處理彩色地圖。下面的示例代碼(標簽的代碼已被省略)演示了條形圖實用程序功能和dautil.data的實用程序功能,它下載了股票價格數據:
import dautil as dl import numpy as np import matplotlib.pyplot as plt ratios = [] STOCKS = ["AAPL", "INTC", "MSFT", "KO", "DIS", "MCD", "NKE", "IBM"] for symbol in STOCKS: ohlc = dl.data.OHLC() P = ohlc.get(symbol)["Adj Close"].values N = len(P) mu = (np.log(P[-1]) - np.log(P[0]))/N var_a = 0 var_b = 0 for k in range(1, N): var_a = (np.log(P[k]) - np.log(P[k - 1]) - mu) ** 2 var_a = var_a / N for k in range(1, N//2): var_b = (np.log(P[2 * k]) - np.log(P[2 * k - 2]) - 2 * mu) ** 2 var_b = var_b / N ratios.append(var_b/var_a - 1) _, ax = plt.subplots() dl.plotting.bar(ax, STOCKS, ratios) plt.show()
有關最終結果,請參閱以下屏幕截圖:
代碼執行隨機游走測試并計算股票價格列表的相應比率。每當您運行代碼時都會檢索數據,因此您可能會得到不同的結果。
以下腳本演示了世界銀行數據的線性回歸實用程序和緩存下載程序(省略了水印和繪圖標簽的代碼):
import dautil as dl import matplotlib.pyplot as plt import numpy as np wb = dl.data.Worldbank() countries = wb.get_countries()[["name", "iso2c"]] inf_mort = wb.get_name("inf_mort") gdp_pcap = wb.get_name("gdp_pcap") df = wb.download(country=countries["iso2c"], indicator=[inf_mort, gdp_pcap], start=2010, end=2010).dropna() loglog = df.applymap(np.log10) x = loglog[gdp_pcap] y = loglog[inf_mort] dl.options.mimic_seaborn() fig, [ax, ax2] = plt.subplots(2, 1) ax.set_ylim([0, 200]) ax.scatter(df[gdp_pcap], df[inf_mort]) ax2.scatter(x, y) dl.plotting.plot_polyfit(ax2, x, y) plt.show()
?代碼應顯示以下圖像:
該計劃下載2010年世界銀行數據,并將嬰兒死亡率與人均GDP進行對比。還示出了對數變換數據的線性擬合。
揭開Docker的神秘面紗Docker使用Linux內核功能來提供額外的虛擬化層。它由Solomon Hykes于2013年創建。Boot2Docker允許我們在Windows和Mac OS X上安裝Docker。Boot2Docker使用包含帶有Docker?的Linux環境的VirtualBox VM?。介紹中提到的Ivan的Docker鏡像基于continuumio / miniconda3?Docker鏡像。
安裝Boot2Docker后,需要對其進行初始化。這只需要一次,Linux用戶不需要這一步:$ boot2docker init
Mac OS X和Windows用戶的下一步是啟動VM:
$ boot2docker start
通過啟動示例容器來檢查Docker環境:
$ docker run hello-world
Docker鏡像組織在一個類似于GitHub的存儲庫中。制作人推送圖像,消費者拉動圖像。您可以使用以下命令拉出Ivan的存儲庫。目前的大小為387 MB。
$ docker pull ivanidris/pydacbk
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/43784.html
摘要:為啥直接不行呢因為以開頭的最后一條命令是。和和和強制終止最常用的,先提出來。。。。我們可以通過這一條命令來迅速回到程序運行的環境。其實這些配置文件以及這些命令和用戶以及權限等都是有很大關系的。 Ubuntu16升級到18.04 有特殊新穎強迫癥癖好可以升下,如果你覺得16.04好用,就根本沒必要升了 我當時租的 云服務器通常都是16.04,現在估計也是16.04較多 我是個...
摘要:雖然現在市面上有很多轉軟件,比如,但大多數的軟件是要收費的,并且價格不菲。于是乎我就想到了利用來寫個程序,把轉成文檔。具體的程序邏輯,可以去查看原文。本文首發于公眾號癡海,每天分享干貨,后臺回復,領取最新教程。 showImg(https://segmentfault.com/img/remote/1460000015686184); 閱讀文本大概需要 6 分鐘。 現在網上有很多文檔是...
摘要:上一篇文章線程專題使用鎖的注意事項下一篇文章線程專題多線程按順序執行線程沒有任何方法可用于強制終止或掛起。實用工具函數函數名解釋返回當前活動的對象數量。 上一篇文章:Python線程專題8:使用鎖的注意事項下一篇文章:Python線程專題10:queue、多線程按順序執行 線程沒有任何方法可用于強制終止或掛起。這是設計上的原因,因為編寫線程程序本身十分復雜。例如:如果某個線程已經獲取...
閱讀 1396·2021-11-24 09:39
閱讀 3686·2021-11-24 09:39
閱讀 1859·2021-11-16 11:54
閱讀 1463·2021-09-30 09:47
閱讀 1712·2021-09-26 10:16
閱讀 2341·2021-09-22 15:33
閱讀 1453·2021-09-14 18:01
閱讀 2435·2021-09-07 09:59