進度條

【實體課程】WordPress 跨界網站接案講座暨工作坊 | 開源研究室 x 進度條線上課程

開源研究室 x 進度條線上課程,台北場盲鳥票開賣中!! 至 11/08 (日) 23:50 為止喔!購票與詳情請看「KKTIX 購票頁面」或「進度條文章

機械學習、大數據要怎麼開始,總之先安裝Python 3 跑跑先吧!

球可以打得爛,但是裝備不能差。在這人工智慧的年代,電腦裡沒有Python怎麼行?

作者: 進度條編輯群 更新日期:

Python與JavaScript算是這幾年聲勢最大的兩個程式語言。同樣身為跨平台的程式語言聲勢上漲的原因都滿明顯的。NodeJS是因為Google Chrome做得太好了,所以就發展出利用其核心V8引擎運作的NodeJS。如果前端與後端都用同一種語言想必可以有效的降低開發人員的學習曲線,更不用說只要跟網站扯上關係的工程師多半都會一些JavaScript。

 

 

 

而本篇的主角Python在真正熱門起來之前已經相當受學術界的歡迎,當初還沒像現在這麼熱門之前比較多使用在科學與數學計算。在一開始的時候,Python也是為了解決C語言與Shell Script所帶來的痛苦,正如同PHP是為了解決C語言在網頁端寫CGI所帶來的麻煩(PHP 作者Rasmus Lerdorf 於WeAreDevelopers Conference 2017 演講所提出)。

 

 

 

 

在一開始或是直到現在,Python與以C語言為底的Matlab一直是學術界最為流行的語言,至少直到小編還是學生的時候,理工科學生再跑分析都還是主推Matlab,寫專題也都是用它。

 

 

但是Matlab其實是付費軟體,如果是非學術單位,一個人的年費需要940美金,如果是買斷又更高,此外Matlab其他的選購工具也都是單項4~500美金起跳的,實在是不適合個人使用者買來練習。雖然學術單位是便宜很多,但是也不算是可以忽略的錢。而Python與他的函式庫都是免費軟體,在研究經費都短少的情況下,如果還堪用的話就湊合著用吧(堪用是指早些年的時候,現在當然早已超越【堪用】)。台灣是近10年來才開始在意智慧財產權(真的會被抓),當筆者還在當學生時,學期初都是助教的一片光碟安裝檔傳全班安裝上課需要的付費軟體呢!

 

 

 

 

可能有很多人跟筆者一樣會想說為什麼學術界鍾愛Python而非PHP與NodeJS或是Ruby等其他語言呢?為什麼科學計算相關的函式庫都做在Python呢?畢竟強大的機械學習函式庫如Scikit-learn、Tensorflow 等都要使用很多基礎的函式庫如Numpy之類的(以上還沒介紹、之後會陸續介紹)

 

 

關於這點,筆者稍微研究了一下,但不太確定是否完全正確,不過應該不會差太遠。

 

1. C# 與JAVA是商業公司所擁有的,一樣可能會有授權問題。事實上JAVA也是有發展相關的科學計算與機械學習,不過可能大家不喜歡Oracle。

 

2. 在Python發明出來之前,C語言已經有相當多強悍的函式庫或是演算法範例了,新的程式如果可以直接封裝會省事很多。更不用說C語言幾乎就是效能的代名詞。Python現在最廣泛的版本的還是cPython,也就是以C語言編寫的版本。所以在與C語言合作上面有很好的相性。前面提到的Numpy這個廣泛使用的函式庫底層就是使用C語言,外面再用Python製作API的接口而已。

(不過C語言很多時候為了效能或其他因素會再封裝組合語言,在BIOS等底層現在還是會看到。)

 

3. Python 是 1991年出生的(WIKI),WWW等網路運用概念約是1991年公開發佈。PHP則是1995年、NodeJS更晚是2009年。大數據、機械學習是這幾年才大熱門起來,之前商業程式顯學都是網站與手機APP程式。所以PHP與NodeJS還沒有豐富的科學計算函式庫,比較多網站相關函式庫。只有更早之前就開始發展的Python有已經成熟的科學計算相關資源。

 

4. 同樣以C語言為底的Ruby 生於1995年,由日本作者松本行弘所發表,所以一開始資源都是日文為主。直到2005年 Ruby on Rails的出現才開始真正廣為人知,而Ruby on Rails也是主打網站相關的運用。出生晚了一些,加上沒有英文資源的硬傷,並且當時科學計算以Matlab為主,除非有愛不然製作一份Ruby版的基礎函式庫實在是吃力不討好。所以Ruby看到比較多的資源都是網站相關運作或是取代Shell Script、排程取向。Ruby的Script最令人所知的應該就是安裝MacOS套件管理系統Homebrew的安裝執行批次檔(原始碼連結)。不過這也是Python的強項之一,例如免費SSL服務 Let's Encrypt的執行檔Certbot就是以Python為主。

 

 

總之因為以上的原因,在市場從瘋網路運用轉到瘋機械學習的時候,Python因其已經包含穩定的科學函式庫與相關運用而坐上了火箭,直衝最受歡迎的程式語言前幾名。並且因為電腦硬體上已經成熟很多,所以本來很難突破的一些效能界線現在甚至可以用個人電腦跑出結果了!當然效能進步的影響早已有跡可循,畢竟像Ruby 也不是個很有效率的程式語言,卻可以因為網路框架良好的設計(Ruby on Rails)而幾年前在矽谷爆紅。


 


本篇沒多著墨於另外一個常見一起被提起的R語言,是因為對他的特性與定位還不熟悉。我們的在選擇技術的時候偏好可以直接整合進現有產品與想法的技術。Python已經深入各大作業系統與套件中了,R語言則比較偏向單純資料分析與大數據應用還有相關領域(有錯歡迎指正)。簡單來說我們的喜好還是比較偏向工程運用而非科學研究與分析。
 

 

 

不過因為新手常有一個疑問就是:「如果我會Python,是不是可以同時學會網路架站與機械學習還有撰寫桌面程式」。所以這邊順便先回答一下。

 

 

如果你是完全的新手,答案就是【不是】。一個長年使用PHP、Ruby on Rails、Java等程式其中之一的架站高手重新學Python並且從零開始學習django 3個月與一個學了一年的django的並且從一開始就使用Python的人。通常前者可以完爆後者。

 

 

原因很簡單,因為網路架站的因素太多,除了Server運行的商業邏輯外,還有Linux系統的調整、Web Service的邏輯、雲端服務的架構、資料庫設計與效能調校、客戶端瀏覽器的考量....等。最終可能其實Python與django的熟練度只佔了整個網站不到的1/3的重要性。作為一個工程師真正的重點是要解決工程問題,而非很會使用工具。就像你開車技術很好,但是客戶想要去的地方是日本,而出發地在台灣,這應該是有些誤會。

 

 

所以不要再聽信那些天真的想法了,當你會一個語言以後,會另外一個並不算太難,只是要花一些時間熟悉。但是跨領域就是完全另外一件事了。就跟用中文寫情書給女朋友和同樣用中文寫碩士論文般的差異。後者是噩夢般的難,而前者是根本沒機會發生...(自己寫一寫不免難過了起來)。所以同理可以用在NodeJS上面,並不是學好了JavaScript就自動變成全端工程師。即使在TensorFlow.js已經出現的當下,即使你已經是相當強悍的前端工程師要學會使用它也還是會花上大量的時間與心力。

(另外一個想法,如果一個技能對你很簡單可以"順便"做到,那對其他人也一樣,這項技術想必一定不值錢。)

 

 

總之既然已經偷偷置入了我們的一些勸世文(應該是大量吧!),現在就開始我們的主題吧!

 

 

首先,因為這是進度條上面的第一篇Python文章,所以要先介紹Python的兩個版本。

 

Python 有兩個版本 Python 2 與 Python 3,一般來說新的版本總是比舊的版本優秀。但是在Python上面不見得成立,因為兩個版本並不相容(但還是很相似)。多數的情況下你無法用Python 3 去跑 Python 2 的程式,而且反之亦然。

 

Python 2已經確定在2020年後不再維護,不過目前還是很多電腦主機還是需要Python 2去執行系統程式。意思就是短時間內你有可能不能刪除電腦裡python 2這個版本。但因為Python 2終究會被遺棄,所以如果要開始寫Python的話就寫Python 3吧 !

 

以下的Python或是進度條其他的文章,沒特別指名的話都是指Python 3 喔!不過並不是所有的電腦都預設有裝Python 3。那我們就先從安裝開始吧!

 

 

如果要安裝Python,第一件事情就是去Python的官網下載,下載最新的就可以了。再來當然是點擊兩下安裝。

 

Mac 下載的會是 pkg 檔

Windows下載的會是exe檔

 

他會自動偵測,不用擔心。

 

Mac版

 

Windows版

 

不過不要高興得太早,如果你是打算要用TensorFlow 去跑機器學習的話,Python 3.7 新加入的保留字async與TensorFlow 1.12 和之前的版本衝突到了(2019/01/19 Tensor Flow 官網上的版本要求還是 Python 3.4 ~ 3.6 ,TensorFlow 官網),所以要安裝之前的版本的話會需要從別的頁面下載installer。當然Google隨時有可能修正這個問題,所以還是要先進去TensorFlow官網看一下喔!

 

Mac:官網連結下載3.6.8

https://www.python.org/downloads/mac-osx/

 

Windows:官網連結下載3.6.8 (x86-64)

https://www.python.org/downloads/windows/

 

 

 

下載完就直接點擊打開安裝檔,基本上就是下一步到最後了。其中會有License Agreement, 反正你不同意也不能用,就大膽的按下Agree吧!(Windows版小心不要安裝到32-bit版本,截圖是在模擬器上安裝,所以才會出現32-bit,應該要用64-bit。下方Add to Path要勾選,這樣才會變成系統指令,可參考下方截圖。)

 

 

途中可以看到一些安裝客製化的選擇(如果你不選擇Customize看不到),初學者一定是全裝,要不然到時候卡住真的很直接發現問題。

 

 

Mac版:

直接按下Install吧!

 

Windows版:

按中間的Install Now (記得要裝64-bit版啊!圖片是有問題的!)

 

 

安裝完畢後按下Close。

 

Windows再多做一步,解開路徑字數限制,這一步也可以不做,主要是以後如果路徑太長,程式執行會發生錯誤。MacOS沒這問題。

 

Windows:

 

 

接著在終端機執行 python 看看吧。

終端機叫不出來?Mac用Spotlight Search搜尋Terminal,Windows用搜尋cmd

 

 

MAC:

 

Windows:



 

終端機或命令提示字元叫出來後就鎖在桌面或是下方工具列吧!

 

執行上面 MacOS可能會同時包含Python2,所以使用 $ python3  會比較保險

Windows 則是使用py 或是 python指令,要指定python 3的話是用 py -3 

執行會進入Python 3的CLI指令介面。

 

Mac:

 

Windows:

 

 

要跳出無論哪一個系統都一樣,直接打上 exit() 就可以跳出了。

 

 

這篇就停在這吧,希望大家安裝都順利啊!

 

 


最後,如果你喜歡我們的文章,別忘了到我們的FB粉絲團按讚喔!!

Small logo

進度條編輯群

進度條編輯團隊