為什麼要選擇Python語言實現機器學習演算法
基於以下三個原因,我們選擇Python作為實現機器學習演算法的程式語言:(1) Python的語法清晰;(2) 易於操作純文字檔案;(3) 使用廣泛,存在大量的開發文件。
可執行虛擬碼
Python具有清晰的語法結構,大家也把它稱作可執行虛擬碼(executable pseudo-code)。預設安裝的Python開發環境已經附帶了很多高階資料型別,如列表、元組、字典、集合、佇列等,無需進一步程式設計就可以使用這些資料型別的操作。使用這些資料型別使得實現抽象的數學概念非常簡單。此外,讀者還可以使用自己熟悉的程式設計風格,如物件導向程式設計、程式導向程式設計、或者函數語言程式設計。不熟悉Python的讀者可以參閱附錄A,該附錄詳細介紹了Python語言、Python使用的資料型別以及安裝指南。
Python語言處理和操作文字檔案非常簡單,非常易於處理非數值型資料。Python語言提供了豐富的正規表示式函式以及很多訪問Web頁面的函式庫,使得從HTML中提取資料變得非常簡單直觀。
Python比較流行
Python語言使用廣泛,程式碼範例也很多,便於讀者快速學習和掌握。此外,在開發實際應用程式時,也可以利用豐富的模組庫縮短開發週期。
在科學和金融領域,Python語言得到了廣泛應用。SciPy和NumPy等許多科學函式庫都實現了向量和矩陣操作,這些函式庫增加了程式碼的可讀性,學過線性代數的人都可以看懂程式碼的實際功能。另外,科學函式庫SciPy和NumPy使用底層語言(C和Fortran)編寫,提高了相關應用程式的計算效能。本書將大量使用Python的NumPy。
Python的科學工具可以與繪圖工具Matplotlib協同工作。Matplotlib可以繪製2D、3D圖形,也可以處理科學研究中經常使用到的圖形,所以本書也將大量使用Matplotlib。
Python開發環境還提供了互動式shell環境,允許使用者開發程式時檢視和檢測程式內容。
Python開發環境將來還會整合Pylab模組,它將NumPy、SciPy和Matplotlib合併為一個開發環境。在本書寫作時,Pylab還沒有併入Python環境,但是不遠的將來我們肯定可以在Python開發環境找到它。
Python語言的特色
諸如MATLAB和Mathematica等高階程式語言也允許使用者執行矩陣操作,MATLAB甚至還有許多內嵌的特徵可以輕鬆地構造機器學習應用,而且MATLAB的運算速度也很快。然而MATLAB的不足之處是軟體費用太高,單個軟體授權就要花費數千美元。雖然也有適合MATLAB的第三方外掛,但是沒有一個有影響力的大型開源專案。
Java和C等強型別程式設計語言也有矩陣數學庫,然而對於這些程式設計語言來說,最大的問題是即使完成簡單的操作也要編寫大量的程式碼。程式設計師首先需要定義變數的型別,對於Java來說,每次封裝屬性時還需要實現getter和setter方法。另外還要記著實現子類,即使並不想使用子類,也必須實現子類方法。為了完成一個簡單的工作,我們必須花費大量時間編寫了很多無用冗長的程式碼。Python語言則與Java和C完全不同,它清晰簡練,而且易於理解,即使不是程式設計人員也能夠理解程式的含義,而Java和C對於非程式設計人員則像天書一樣難於理解。
所有人在小學二年級已經學會了寫作,然而大多數人必須從事其他更重要的工作。
——鮑比·奈特
也許某一天,我們可以在這句話中將“寫作”替代為“編寫程式碼”,雖然有些人對於編寫程式碼很感興趣,但是對於大多數人來說,程式設計僅是完成其他任務的工具而已。Python語言是高階程式語言,我們可以花費更多的時間處理資料的內在含義,而無須花費太多精力解決計算機如何得到資料結果。Python語言使得我們很容易表達自己的目的。
Python語言的缺點
Python語言唯一的不足是效能問題。Python程式執行的效率不如Java或者C程式碼高,但是我們可以使用Python呼叫C編譯的程式碼。這樣,我們就可以同時利用C和Python的優點,逐步地開發機器學習應用程式。我們可以首先使用Python編寫實驗程式,如果進一步想要在產品中實現機器學習,轉換成C程式碼也不困難。如果程式是按照模組化原則組織的,我們可以先構造可執行的Python程式,然後再逐步使用C程式碼替換核心程式碼以改程式序的效能。C++ Boost庫就適合完成這個任務,其他類似於Cython和PyPy的工具也可以編寫強型別的Python程式碼,改進一般Python程式的效能。
如果程式的演算法或者思想有缺陷,則無論程式的效能如何,都無法得到正確的結果。如果解決問題的思想存在問題,那麼單純通過提高程式的執行效率,擴充套件使用者規模都無法解決這個核心問題。從這個角度來看,Python快速實現系統的優勢就更加明顯了,我們可以快速地檢驗演算法或者思想是否正確,如果需要,再進一步優化程式碼。
注:本文摘自即將在6月10號左右上市的《機器學習實戰》
相關文章
- 為什麼機器學習會選擇Python語言?機器學習Python
- 進入IT行業,為什麼要選擇學習Python語言?行業Python
- 為什麼機器學習會選擇Python語言?很簡單!機器學習Python
- 為什麼要選擇學習python?學習python的原因!Python
- 為什麼機器學習會選擇Python語言?這篇文章一定要看!機器學習Python
- 為什麼要學習Python語言?Python入門Python
- (轉)為什麼選擇機器學習策略機器學習
- 學習Python語言為什麼要參加培訓?Python
- 為什麼要學習Python語言?哪些人適合學習?Python
- 為什麼要學習Go語言呢?Go
- 為什麼要選擇電話機器人?機器人
- 學習程式語言選擇Python怎麼樣?Python
- 為什麼要選擇學Python?Python可做哪些事情?Python
- 學機器學習要選擇 Python 的13個原因機器學習Python
- 程式語言這麼多,為什麼建議選擇Python?Python
- 為什麼爬蟲語言選擇Python而不是Java?爬蟲PythonJava
- 何為程式語言?為什麼要學C語言?C語言
- 為什麼那麼多人要學習go語言?go語言有什麼特點?Go
- 為什麼程式設計初學者會選擇 Python 作為入門語言?程式設計Python
- [精選] 為什麼要選擇Go語言作為PHP的黃金組合?而不是Java或PythonGoPHPJavaPython
- 為什麼要學習Python?學習Python可以做什麼?Python
- 為什麼要選擇學習Linux呢?Linux發展如何?Linux
- 學習Python語言選擇哪種方式好?Python
- 學習程式語言選擇Python怎麼樣?適合入門學習?Python
- 機器學習實戰----k值近鄰演算法(Python語言)機器學習演算法Python
- 為什麼要選擇Python進行Web開發?PythonWeb
- Python語言怎麼樣?為什麼學Python?Python
- 為什麼轉行都會選擇Python呢?學習python有什麼好處?Python
- 為什麼爬蟲語言大多都會選擇Python而不是Java?爬蟲PythonJava
- 機器學習--要學點什麼機器學習
- 為什麼要學習Python?Python可以做什麼事情?Python
- 為什麼Python是資料科學領域的首選語言?Python入門學習Python資料科學
- 為什麼學習python要掌握Linux?PythonLinux
- Python是什麼型別語言?為何Python這麼多人學習?Python型別
- 九個理由告訴你為什麼要選擇RPA機器人!機器人
- 學習Python有什麼好處?Python語言為什麼這麼受歡迎?Python
- Python優勢是什麼?為什麼要學習?Python
- 嵌入式開發為什麼選擇C語言?C語言
- 為什麼選擇Java語言用作高頻交易?-JadJava