官术网_书友最值得收藏!

1.2 開發環境搭建

1.2.1 AI領域的標準編程語言:Python

Python是最適合初學者的編程語言,也是目前IT行業入門簡單、功能強大的工業級開發平臺的語言。

Python已經是機器學習、神經網絡等人工智能開發領域的工業標準編程語言。

1.入門簡單

任何熟悉JavaScript腳本、Visual Basic、C語言、Delphi的用戶,通常一天即可學會Python。

即使是不會編程的設計師、打字員,一周內也能熟練掌握Python,學習難度絕對不會高于Photoshop、五筆輸入法,至少筆者和許多程序員一樣,也不會使用五筆輸入法。

2.功能強大

海量級的Python模塊庫,提供了IT行業最前沿的開發功能。

· 大數據:pandas已經逐步超越R語言。

· CUDA:高性能計算,Python、C(C++)與Fortran是NVIDIA官方認可的3種編程語言,也是目前唯一適合PC平臺的CUDA編程工具。

· 機器學習:scikit-learn、Theano、Pattern是國際上熱門的機器學習平臺。

· 自然語言:NLTK,全球首選的自然語言處理平臺;spaCy,工業級的NLP平臺。

· 人臉識別:OpenCV,光流算法、圖像匹配、人臉算法,簡單優雅。

· 游戲開發:Pygame提供圖像、音頻、視頻、手柄、AI等全套游戲開發模塊庫。

· 字體設計:Fontforge,是唯一商業級的字體設計開源軟件,內置的腳本語言和底層核心的Fonttools,都是基于Python而開發的。

· 電腦設計:blend、GIMP、Inkscape、MAYA、3DS都內置或擴展了Python語言支持。

既然Python如此美好,而且是100%免費的開源軟件,學習Python的人越來越多,為什么Python始終還只是一種小眾語言呢?

筆者認為,Python的“大眾化”之路,存在以下兩個瓶頸。

· 配置:軟件行業有一句俗話“搞懂了軟件配置,就學會了一半”。對于Python和Linux等許多開源項目而言,80%的問題,都出現在配置方面,尤其是模塊庫的配置。

· OOP(面向對象程序設計):大部分人都認為Python是一種“面向對象”的編程語言,而業界公認OOP的編程風格比較繁雜。

如果能夠解決好以上兩個問題,Python的學習難度可以降低90%,在應用領域可以瞬間提升數十倍效能,而且這種提升是零成本的。

1.2.2 zwPython:難度降低90%,性能提高10倍

筆者在WinPython軟件包的基礎上,推出了“zwPython”——字王集成式Python開發平臺。

· 提出“零配置、零對象”研發理念,綠色軟件封裝模式,類似Mac開箱即用風格,無須安裝,解壓即可直接使用,還可以放入U盤,支持Mob-App移動式開發編程。

· 具有“外掛”式“核彈”級開發功能,內置很多功能強大的開發模塊庫,例如OpenCV視覺、人臉識別、CUDA高性能GPU并行計算(OpenCL)、pandas大數據分析、機器學習、NLTK自然語言處理。

· 便于擴展,用戶可以輕松增刪相關模塊庫,全程智能配置,無須用戶干預,就好像拷貝文件一樣簡單,而且支持U盤移動便攜模式,真正實現了“一次安裝,隨處可用”。

· 針對中文開發文檔缺乏、零散的不足,內置多部中文版OpenCV、Fontforge和Python入門教材。

· 內置多款中文開源TrueType字庫。

· 大量示例腳本源碼,涵蓋OpenCV、CUDA、OpenCL、Pygame等。

如此種種只是為了便于IT行業外的用戶能夠“零起步”,快速入門,并且短時間內應用到生產環節當中去。

zwPython前身是zw2015sdk:字王智能字模設計平臺,原設計目標是向廣大設計師提供一款統一的、可編程的字體設計平臺,以便于大家交流。

· 設計師、美工都是文藝青年、IT小白,所以,簡單是必需的,開箱即用也必須是標配。

· 由于設計師做設計,所以圖像處理PIL、Matplotlib模塊是必需的。

· 集成了OpenCV作為圖像處理、匹配模塊,自然也提供了機器學習功能。

· 字模處理數據量很大,屬于大數據范疇,須集成SciPy、NumPy和pandas數據分析模塊。

· 由于原生Python速度慢,所以增加了PyCUDA、OpenCL高性能GPU計算模塊。

如此一而再,再而三地擴充,發現zwPython已經基本覆蓋了目前Python和IT編程90%的應用領域,因此又增加了部分模塊,將zwPython擴展成為一個通用的、集成式Python開發平臺。

1.2.3 “零對象”編程模式

雖然,很多人認為Python是一種“面向對象”的編程語言。

但對于初學者而言,把Python視為一種BASIC風格的、過程式入門語言,學習難度可以降低90%,基本上學習一小時即可動手編寫學習代碼。

有人說,“面向對象”最大的好處是方便把人腦子攪亂。

Windows、Linux、UNIX、Mac OS X內核都是C語言編寫的。有一種系統是C++寫的內核,就是諾基亞的塞班系統,據說代碼量很大,連他們自己的程序員都無法維護,最后就死掉了。

簡而言之,“面向對象”風格的代碼:一個字“繁”、兩個字“繁繁”、三個字“繁繁繁”。

“零對象編程模式,用BASIC的方式學習Python”,是筆者向Python編程語言的入門用戶提出的一種全新的學習理論,一家之言,僅供參考。

Talk is cheap,show me the code!大家還是多多動手。

大家很容易理解“零配置”,下面關于“零對象”再補充幾點。

· 不寫“面向對象”風格的代碼不等于不能使用,對于各種采用“對象”模式開發的模塊庫,我們仍然可以直接調用。

· 將Python視為非“面向對象”語言并非大逆不道,事實上,許多人認為,Python也是一種類似LISP的“函數”編程語言。

· 筆者從事編程十多年,從未用過“面向對象”模式編寫過一行“class”(類對象)代碼,依然可以應對各種編程工作。

· 目前“面向對象”編程理論在業界仍然爭論不休,入門者功力不夠,最好避開強者間的火力殺傷。

· “面向對象”過于復雜,與“人生苦短,我用Python”的優雅風格天生不合。

1.2.4 開發平臺搭建

本節主要講解Python開發環境和數據包的配置、應用流程方面的知識。

本書所有案例程序均采用純Python語言開發,除特別指明外,均默認使用Python 3語法,且經過zwPython平臺測試。

zwPython是極寬公司推出的一個Python集成版本,功能強大,屬于免費開源軟件。系統內置了數百種專業的Python模塊庫,無須安裝,解壓即用。

本書所有案例程序可用于zwPython平臺,以及各種支持Python 3的設備平臺,包括Linux操作系統、Mac蘋果電腦,以及安卓系統、樹莓派。

其他非zwPython用戶運行本書程序,如果出現問題,通常是缺少有關的Python模塊庫,可以根據調試信息安裝相關的Python模塊庫,再運行相關程序。

限于篇幅,關于Python語言和pandas數據分析軟件的基本操作,請讀者查看有關圖書。

zwPython下載地址,請參見TOP極寬量化網站“資源中心”:

http://www.topquant.vip,或http://www.ziwang.com。

1.2.5 程序目錄結構

本書配套程序的工作目錄是zwPython\kb_demo,這個目錄也是默認的工作目錄,凡是沒有標注目錄的腳本文件,一般都位于該目錄。有關的程序會定時在讀者群發布更新,請讀者及時下載。

kb_demo目錄收錄的是本書課件配套代碼和所需數據,kb_demo目錄也可以復制到其他目錄,建議放到zwPython根目錄下。

zwPython目錄結構中的其他子目錄如下。

· \zwPython\doc\:用戶文檔中心,包括用戶手冊和部分中文版的模塊庫資料。

· \zwPython\py36\:Python 3.6版本系統目錄,除增加、刪除模塊庫外,一般不需要改動本目錄下的文件,以免出錯。另外,如果日后Python版本升級,這個目錄也會變化,如Python 3.7,會采用py37目錄。

· \zwPython\demo\:示例腳本源碼。

· \zwPython\zwrk\:zw工作目錄,用戶編寫的腳本代碼文件建議放在本目錄下。

· \zwPython\TopQuant\:極寬量化系統源碼。

案例1-1:重點模塊版本測試

案例1-1文件名是kb101_ver.py,主要用于重點模塊版本號的測試,因為Python發展很快,許多配套的第三方軟件模塊也更新頻繁,有時會出現API接口變化,從而造成版本沖突。

這種版本測試,是工程一線特別是團隊項目起步階段規范開發環境常用的一種手段。

案例1-1源碼很簡單,需要注意的是源碼頭部的import模塊庫導入語句。

import導入常用的模塊和模塊的縮寫。前面的import模塊語句都很正常,請注意最后兩行語句。

tflearn模塊有兩種導入方式。嚴格說來,第二種方式不是標準的模塊導入命令,而是一種別名,是長變量名稱的縮寫。這是因為,tflearn本身是TensorFlow系統內置的第三方模塊,目前也有獨立版本的tflearn模塊,不過兩者的源碼并非完全同步,筆者在測試TF-GPU 1.2和tflearn 0.31時,就發現有版本沖突問題。

為了程序的兼容性,通常采用以下的模式。

案例1-1的核心代碼也很簡單,就是輸出相關模塊的版本號。

以上代碼中,需要注意的是使用的版本顯示命令。

這個雖然不是標準的Python語法,但已經是一種約定俗成,有時,也被稱為魔法語句。

對應的輸出信息如下。

以上輸出信息中,需要注意的是開頭的輸出信息。

以上輸出信息,表示使用TensorFlow作為后端程序,import導入Keras模塊庫時自動輸出。這條信息只在第一次運行程序時出現,大家可以多運行幾次,看看效果。

此外,需要注意的還有最后一條輸出信息。

tflearn沒有版本號,這是因為tflearn模塊不支持相關的版本命令。

這可能是因為tflearn原本是TensorFlow內置的模塊,所以沒有加入相關的版本語句,即使我們采用import導入獨立的tfearn模塊,也無法顯示相關的版本號。

目前,我們使用的tflearn版本號是0.31,為了避免版本沖突,還是希望tflearn開發團隊在未來的更新當中增加相關的版本號信息,

案例1-1介紹了機器學習結合金融工程、量化回溯、數據分析等項目時常用的Python模塊。

· TensorFlow是神經網絡、深度學習開發平臺。

· tflearn、Keras、TensorLayer是TensorFlow的簡化接口。

· NLTK是語義分析模塊。

· pandas是新一代數據分析工具。

· Plotly是新一代互動型數據可視化繪圖工具。

· Arrow是新一代優雅、簡潔的時間模塊。

· Matplotlib是經典的繪圖模塊。

· Tushare是國內股票數據的采集模塊。

以上模塊和對應的版本,我們均已集成在最新版本的zwPython當中。使用其他平臺,如Mac、Linux,或者其他Python開發環境的用戶,請自行升級安裝以上模塊,并注意相關的版本號。

升級安裝相關模塊庫時,請注意相關的依賴模塊軟件,特別是手動升級獨立的安裝包時。

筆者在升級以上模塊庫時,就遇到提示說,新版本的pandas缺乏某種屬性,無法使用。后來在Stack Overflow這個全球最大的IT答問網站才找到答案。原來是配套的Dash模塊也必須升級到最新的Dash 0.14.3版本。

主站蜘蛛池模板: 泸溪县| 晋宁县| 天柱县| 临沭县| 太康县| 蒙阴县| 乡宁县| 扎兰屯市| 孟州市| 景宁| 美姑县| 万全县| 宁津县| 山阳县| 湖州市| 九龙坡区| 江北区| 玉屏| 江永县| 若羌县| 思茅市| 安康市| 湘西| 常德市| 宁强县| 海兴县| 阿拉尔市| 高阳县| 霍城县| 霍邱县| 自治县| 固安县| 象山县| 永宁县| 南陵县| 灵山县| 天等县| 柘荣县| 柳河县| 招远市| 芒康县|