跳到主要內容

macOS 使用Miniconda配置本地數據運算環境

目前,做數據分析工作,基本人手Numpy,pandas,scikit-learn。而這些計算程序包都是基於python平台的,所以搞數據的都得先裝個python環境。。。(當然,你用R或Julia請忽略本文)


在macOS上,默認安裝有python 2.7,鑒於python2即將停止更新,如果沒有大量的python2代碼需要維護,就直接安裝python3吧。


版本選擇


做數據運算,流行的方式是直接下載Anaconda安裝包,大概500M左右,各種依賴包(綁定了四五百個科學計算程序包),開發工具(jupyter notebook,spyder)一股腦兒都包含了,按照步驟安裝完成,開箱即用,不過裝完後會佔用幾個G的硬盤空間。


我這邊由於硬盤空間有限,採用Miniconda這個發行版本,最新的基於python3.7版本的不到50M。而Miniconda一樣使用conda作為包管理器,可以輕鬆的安裝自己需要的包,例如Numpy,pandas, matplotlib等等。


當然,也可以從安裝包或homebrew開始裝,然後再使用pip來安裝相關的程序包。總體上來說,python自身的版本和執行路徑是相當混亂的,可參考下圖。


安裝步驟



  • 下載
    先從官網下載適合自己操作系統的版本,Miniconda
    支持Windows/Linux/macOS這三種主流操作系統。如果遇到官網下載慢的問題,可以考慮國內的鏡像站點,如。


下載完成后,可以先核對下hash值,與官網的值(5cf91dde8f6024061c8b9239a1b4c34380238297adbdb9ef2061eb9d1a7f69bc)是否一致保證安裝文件未被篡改。


$ shasum -a 256 Miniconda3-latest-MacOSX-x86_64.sh 
5cf91dde8f6024061c8b9239a1b4c34380238297adbdb9ef2061eb9d1a7f69bc Miniconda3-latest-MacOSX-x86_64.sh


  • 執行安裝


$ bash ./Miniconda3-latest-MacOSX-x86_64.sh 

Welcome to Miniconda3 4.7.12

In order to continue the installation process, please review the license
agreement.
Please, press ENTER to continue


Do you accept the license terms? [yes|no]
[no] >>> yes

Miniconda3 will now be installed into this location:
/Users/shenfeng/miniconda3

- Press ENTER to confirm the location
- Press CTRL-C to abort the installation
- Or specify a different location below

[/Users/shenfeng/miniconda3] >>>

>>>

按照提示,敲擊回車。中間需要同意使用條款,需要輸入yes,按照路徑點回車默認即可。


Do you wish the installer to initialize Miniconda3
by running conda init? [yes|no]
[yes] >>> yes

==> For changes to take effect, close and re-open your current shell. <==

If you'd prefer that conda's base environment not be activated on startup,
set the auto_activate_base parameter to false:

conda config --set auto_activate_base false

Thank you for installing Miniconda3!

最後的提示是,可以用conda config --set auto_activate_base false命令取消python3環境在啟動時自行加載。



  • 重新開一個新的終端
    可以發現,python3的env已經生效了。


(base) my:~ shenfeng$ python
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
[Clang 4.0.1 (tags/RELEASE_401/final)] :: Anaconda, Inc. on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>


  • 查看env配置


$ conda env list
# conda environments:
#
base * /Users/shenfeng/miniconda3

使用conda deactivate可以python3的執行環境,使用conda activate base可以激活默認的python3環境。



  • 添加國內鏡像源
    由於conda的包服務器都在海外,直接連接安裝可能出現連接超時無法完成的時候,所以可以通過修改用戶目錄下的.condarc 文件。


channels:
- defaults
show_channel_urls: true
default_channels:
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free
- https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
custom_channels:
conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud


  • 使用conda安裝相應的程序包
    先使用conda list檢查已經安裝的包,使用conda install需要的程序包


$ $ conda list numpy
# packages in environment at /Users/shenfeng/miniconda3:
#
# Name Version Build Channel

$ conda install numpy

$ conda list numpy
# packages in environment at /Users/shenfeng/miniconda3:
#
# Name Version Build Channel
numpy 1.17.3 py37h4174a10_0 defaults
numpy-base 1.17.3 py37h6575580_0 defaults

相同的方式,我們可以安裝scipy,pandas等包,不再贅述。


交互式工具安裝


大家耳熟能詳的交互式工具肯定就是Jupyter notebook,但我在本機同樣由於磁盤空間問題只安裝ipython。實際上,Jupyter是基於ipython notebook的瀏覽器版本。



  • 安裝


$ conda install ipython


  • 執行ipython交互


$ ipython
Python 3.7.4 (default, Aug 13 2019, 15:17:50)
Type 'copyright', 'credits' or 'license' for more information
IPython 7.9.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: import numpy as np
In [2]: dataset= [2,6,8,12,18,24,28,32]
In [3]: sd= np.std(dataset,ddof=1)
In [4]: print(sd)
10.977249200050075

樣例數據處理


先從網上下載一個樣例數據,為excel文件,另存為成csv進行處理。


以下結合上周文章中的,計算這組數據的概括性度量。



  • 讀取數據


import numpy as np
from scipy import stats

dataset = np.genfromtxt('/Users/shenfeng/Downloads/test1.csv',delimiter=',', skip_header=1)
print('Shape of numpy array: ', dataset.shape)
Shape of numpy array: (699,)

集中趨勢的度量



  • 眾數


mode = stats.mode(dataset)                                
print('該組數據的眾數為: ', mode)
該組數據的眾數為: ModeResult(mode=array([1.]), count=array([145]))
# 結果說明眾數為1,出現了145次


  • 中位數


print('該組數據的中位數為: ', np.median(dataset))
該組數據的中位數為: 4.0


  • 四分位數


# 不需要提前排序
print("1/4分位數: ", np.percentile(dataset, 25, interpolation='linear'))
1/4分位數: 2.0

print("1/2分位數: ", np.percentile(dataset, 50, interpolation='linear'))
1/2分位數: 4.0

print("3/4分位數: ", np.percentile(dataset, 75, interpolation='linear'))
3/4分位數: 6.0


  • 平均數


print('該組數據的平均數為: ', np.mean(dataset))
該組數據的平均數為: 4.417739628040057

離散程度的度量



  • 標準差


print('該組數據的總體標準差為: ', np.std(dataset,ddof=0))
該組數據的總體標準差為: 2.8137258170785375


  • 標準分數


# 變量值與其平均數的離差除以標準差后的稱為標準分數(standard score)
print('該組數據的標準分數為: ', stats.zscore(dataset))
該組數據的標準分數為: [ 0.20693572 0.20693572 -0.50386559 0.56233637 -0.14846494 1.27313768
-1.2146669 -0.85926625 -0.85926625 -0.14846494 -1.2146669 -0.85926625 ...省略 ]


  • 離散係數


# 離散係數是測度數據離散程度的統計量,主要用於比較不同樣本數據的離散程度。
print('該組數據的離散係數為: ', stats.variation(dataset))
該組數據的離散係數為: 0.6369152675317026

偏態與峰態的度量



  • 數據分布圖


import matplotlib.pyplot as plt 
plt.style.use('ggplot')
plt.hist(dataset, bins=30)

獲得以下分布圖



  • 偏態


print('該組數據的偏態係數為: ', stats.skew(dataset))
該組數據的偏態係數為: 0.5915855449527385
# 偏態係數在0.5~1或-1~-0.5之間,則認為是中等偏態分佈


  • 峰態係數


print('該組數據的峰態係數為: ', stats.kurtosis(dataset))
該組數據的峰態係數為: -0.6278342838815454
# 當K<0時為扁平分佈,數據的分佈更分散

總結


本文使用Miniconda發行版配置本地數據運算環境,並對樣例做數據的概括性度量。

本站聲明:網站內容來源於博客園,如有侵權,請聯繫我們,我們將及時處理
【其他文章推薦】

※帶您來了解什麼是 USB CONNECTOR  ?



※自行創業 缺乏曝光? 下一步"網站設計"幫您第一時間規劃公司的門面形象



※如何讓商品強力曝光呢? 網頁設計公司幫您建置最吸引人的網站,提高曝光率!!



※綠能、環保無空污,成為電動車最新代名詞,目前市場使用率逐漸普及化



※廣告預算用在刀口上,網站設計公司幫您達到更多曝光效益



Orignal From: macOS 使用Miniconda配置本地數據運算環境

留言

這個網誌中的熱門文章

有了四步解題法模板,再也不害怕動態規劃!(看不懂算我輸)

導言 動態規劃問題一直是算法面試當中的重點和難點,並且動態規劃這種通過空間換取時間的算法思想在實際的工作中也會被頻繁用到,這篇文章的目的主要是解釋清楚 什麼是動態規劃 ,還有就是面對一道動態規劃問題,一般的 思考步驟 以及其中的注意事項等等,最後通過幾道題目將理論和實踐結合。 什麼是動態規劃 如果你還沒有聽說過動態規劃,或者僅僅只有耳聞,或許你可以看看 Quora 上面的這個 回答 。 How to explain dynamic 用一句話解釋動態規劃就是 " 記住你之前做過的事 ",如果更準確些,其實是 " 記住你之前得到的答案 "。 我舉個大家工作中經常遇到的例子。 在軟件開發中,大家經常會遇到一些系統配置的問題,配置不對,系統就會報錯,這個時候一般都會去 Google 或者是查閱相關的文檔,花了一定的時間將配置修改好。 過了一段時間,去到另一個系統,遇到類似的問題,這個時候已經記不清之前修改過的配置文件長什麼樣,這個時候有兩種方案,一種方案還是去 Google 或者查閱文檔,另一種方案是借鑒之前修改過的配置,第一種做法其實是萬金油,因為你遇到的任何問題其實都可以去 Google,去查閱相關文件找答案,但是這會花費一定的時間,相比之下,第二種方案肯定會更加地節約時間,但是這個方案是有條件的,條件如下: 之前的問題和當前的問題有着關聯性,換句話說,之前問題得到的答案可以幫助解決當前問題 需要記錄之前問題的答案 當然在這個例子中,可以看到的是,上面這兩個條件均滿足,大可去到之前配置過的文件中,將配置拷貝過來,然後做些細微的調整即可解決當前問題,節約了大量的時間。 不知道你是否從這些描述中發現,對於一個動態規劃問題,我們只需要從兩個方面考慮,那就是 找出問題之間的聯繫 ,以及 記錄答案 ,這裏的難點其實是找出問題之間的聯繫,記錄答案只是順帶的事情,利用一些簡單的數據結構就可以做到。 概念 上面的解釋如果大家可以理解的話,接    動態規劃 算法是通過拆分問題,定義問題狀態和狀態之間的關係,使得問題能夠以遞推(或者說分治)的方式去解決。它的幾個重要概念如下所述。    階段: 對於一個完整的問題過程,適當的切分為若干個相互聯繫的子問題,每次在求解一個子問題...

我的USB為什麼總是無法識別,到底是為甚麼呢?這真的讓我好困擾

其實判斷軟件硬件問題很簡單,在別的機器或換個系統試試就可以了.有些小的問題不妨先用專門軟件格式化下.還有提醒你WINDOWS下格式化時要選擇FAT,不要選FAT32。 倘若插入後,在右下角彈出電腦正在嘗試連接此USB設備的一些信息,有時會彈出對話框讓用戶選擇,有些用戶還沒看清就點了否,或者因為電腦一些初始的設置問題,禁止了USB的一些功能。解決辦法:右鍵點"我的電腦",選"屬性"--"硬件"--"驅動器簽名",在此選擇"忽略",點"確定"。然後重新插上usb,還是不連的話,再右鍵點"我的電腦"--"屬性"--"硬件"--"設備管理器",從中找到"通用串行總線控制器",右鍵,然後"掃描檢測硬件改動"。如果都不行那就是USB識別程序或U盤的問題從控制面板進入添加或刪除硬件將所有USB設備都刪除,重新安裝需要使用的USB設備驅動程序,重新啟動電腦 USB CONNECTOR   USB CONNECTOR  USB CONNECTOR Orignal From: 我的USB為什麼總是無法識別,到底是為甚麼呢?這真的讓我好困擾

為何 Amazon 併購 Oracle 的可能性很大 ?

  2019 年 9 月份 Trefis 團隊建議《Trefis 建議:谷歌可以斥資 90 億美元收購 Nutanix》,最近又建議亞馬遜收購 Oracle。此文是其和《福布斯》雜誌的 Great Speculations 合作撰寫。   根據 Trefis 分析,亞馬遜併購 Oracle 有望帶來巨大的價值。雖然這個想法聽起來很雄心勃勃,但是為了使自己處於雲技術食物鏈的頂端,Oracle 可能是亞馬遜有史以來最好的收購對象。我們詳細說明為什麼亞馬遜可能會收購 Oracle,還在交互式儀錶板中估計了潛在交易的價值。我們的估計基於 Oracle 的獨立價值以及它作為與亞馬遜合併后的實體中一部分而具有的價值。    為何我們認為亞馬遜會收購 Oracle?      兩家公司的概況: 亞馬遜可能是在 2000 年代中期第一家打造公共雲生態系統的供應商,但 Oracle 從事數據庫業務已有近 40 年的歷史。 AWS 的想法是可以將基礎設施出租給希望存儲和計算資源方面減少費用的客戶。根據 Trefis 的估計,AWS 的企業價值高達 4930 億美元,EV/EBITDA 是 27 倍(2020 年 EBITDA 為 180 億美元)。 Oracle 因第一代雲產品失敗而很晚進入雲市場,該公司隨後在開發方面投入大量資金,旨在向市場推出第二代雲。根據 Trefis 的估計,Oracle 的企業價值應為 2510 億美元,EV/EBITDA 是 12.7 倍(2020 年 EBITDA 為 200 億美元)。 AWS 的方法是創建產品,然後讓用戶採用它。Oracle 已經長期擁有這樣的用戶群,卻無法滿足 AWS 能夠滿足的要求。結果是,儘管 Oracle 運行着全球近 50% 的數據庫,但如今 AWS 在公共雲市場的份額超過 40%,而 Oracle 甚至沒有躋身前五名。   理由1:客戶將獲得第二代架構的安全性和 AWS 的客戶服務,因而導致差異化產品與競爭。 由於市場上面臨微軟 Azure(已成為微軟 B2B 和 B2C 產品的底層結構)、谷歌雲(迎來新的掌門人)和 IBM 雲產品(收購 Red Hat 之後)的競爭,AWS 的先行優勢如今可能在減弱。 對老牌雲領導企業構成不利的另一個因素是,原本可以遷移到...