- Python人工智能
- 劉偉善
- 2438字
- 2020-10-16 16:26:57
1.2 Python能做什么
如果你想學Python,或者你剛開始學習Python,那么你可能會問:“我能用Python做什么?”這個問題不好回答,因為Python有很多用途。從事Python開發這么久,也了解了不少,筆者發現Python主要有以下五大應用:人工智能、網絡爬蟲、數據分析、Web開發和自動化運維等。
1.2.1 人工智能
人工智能是研究、開發用于模擬、延伸和擴展人類智能的理論、方法、技術和應用系統的一門新技術科學。對于想加入AI和大數據行業的開發者來說,學習Python是必要的。或者用另一種方式來說,如果你將來想在這個行業工作,你什么都不用想,首先閉上眼睛,學習Python。
當然,Python也并非沒有它的問題和缺點。你可以也應該學習另一種語言,甚至幾種語言來匹配Python,但是Python將坐穩數據分析和AI第一語言的位置,這一點毫無疑問。
筆者甚至認為,由于Python坐穩了這個位置,由于這個行業未來需要大批的從業者,更由于Python正在迅速成為全球大中小學編程入門課程的首選教學語言,這種開源動態腳本語言非常有機會在不久的將來成為第一種真正意義上的編程世界語。
1.2.2 網絡爬蟲
1.什么叫網絡爬蟲
網絡爬蟲又稱網絡蜘蛛,是指按照某種規則在網絡上爬取所需內容的腳本程序。眾所周知,每個網頁通常包含其他網頁的入口,網絡爬蟲則通過一個網址依次進入其他網址獲取所需內容。
2.爬蟲有什么用
爬蟲可作為通用搜索引擎網頁收集器。Google、Baidu做垂直搜索引擎,在線人類行為、在線社群演化、人類動力學、計量社會學、復雜網絡、數據挖掘等領域的實證研究,都需要大量數據,網絡爬蟲是收集相關數據的利器。偷窺、hacking、發垃圾郵件……都要用到爬蟲。爬蟲是搜索引擎的第一步,也是最容易的一步。
3.用什么語言寫爬蟲
爬蟲可用C、C++或一些腳本語言編寫。
C、C++語言:高效率、快速,適合通用搜索引擎做全網爬取。但開發慢,寫起來又“臭”又長,如天網搜索源代碼。
腳本語言:Perl、Python、Java、Ruby。簡單、易學,良好的文本處理能力方便網頁內容的細致提取。但效率往往不高,適合對少量網站的聚焦爬取。
4.為什么最終選擇Python
筆者用C#、Java寫過爬蟲,區別不大,原理就是利用好正則表達式,只不過是平臺問題。后來了解到很多爬蟲都是用Python寫的,于是便一發不可收拾。Python優勢很多,總結了以下兩個要點。
(1)抓取網頁本身的接口。與Java、C#、C++等其他靜態編程語言相比,Python抓取Web文檔的界面更簡單;相比其他動態腳本語言,如Perl、Shell、Python的Urllib 2包提供了較為完整的訪問網頁文檔的API。當然Ruby也是不錯的選擇。此外,抓取網頁有時候需要模擬瀏覽器的行為,很多網站對于生硬的爬蟲抓取都是封殺的。這時我們需要模擬User Agent的行為構造合適的請求,如模擬用戶登錄,模擬Session/Cookie的存儲和設置。在Python里都有非常優秀的第三方包幫你搞定,如Requests、Mechanize。
(2)網頁抓取后的處理。捕獲的網頁通常需要進行處理,如過濾HTML標簽、提取文本等,Python的Beautiful Soap提供了簡潔的文檔處理能力,可以用很短的代碼處理大部分文檔。其實很多語言和工具都具有上面的功能,但是Python可以做到最快、最干凈。
1.2.3 數據分析
一般我們用爬蟲爬到大量的數據之后,需要處理數據用來分析,這是我們最終的目的。關于數據分析的庫也是非常豐富的,各種圖形分析圖等都可以做出來,非常方便,其中諸如Seaborn這樣的可視化庫,能夠僅僅使用一兩行就對數據進行繪圖,而利用Pandas、Numpy和Scipy,則可以簡單地對大量數據進行篩選、回歸等計算。而后續復雜計算中,對接機器學習相關算法,或者提供Web訪問接口,或是實現遠程調用接口,都非常簡單。
提及數據分析,人們不免會想到Python數據分析的應用方向,Python也被看作數據分析的首選語言。Python作為一種面向對象、直譯式計算機程序設計語言,具有簡單、易學、免費開源、可移植性強、可擴展性強等特點。Python中擁有豐富而強大的庫,而這些正是它在數據分析領域備受重視的關鍵。
1.2.4 Web開發
什么是Web開發呢?其實就是開發一個網站。那開發網站需要用到哪些知識呢?
1.Python基礎
因為要用Python開發,所以Python一定要會,至少要掌握順序結構、條件判斷、循環、函數和類這些知識。
2.HTML、CSS的基礎知識
因為要開發網站,網頁都是用HTML和CSS寫的,所以要學會這些知識。就算不會寫前端,開發不出來特別漂亮的頁面、網站,最起碼要能看懂HTML標簽。
3.數據庫基礎知識
開發一個網站的數據存在哪里?就是在數據庫里,那最起碼要了解數據庫的增刪改查,否則無法存取數據。
具有上面這些知識,就基本可以開發一家簡單的小網站了,如果想開發比較大型的、業務邏輯比較復雜的網站,那就要用到其他知識了,如Redis、MQ等。
最近,Django和Flask等基于Python的Web框架在Web開發中非常流行。這些Web框架可以幫助開發者用Python編寫服務器端代碼(后端代碼)。這是在開發者的服務器上運行的代碼,而不是運行在用戶設備和瀏覽器的代碼(前端代碼)。
1.2.5 自動化運維
隨著信息時代的不斷發展,IT運維已經成為IT服務內涵的重要組成部分。面對越來越復雜的業務和越來越多樣化的用戶需求,不斷擴展的IT應用需要越來越合理的模式,以保證IT服務能夠靈活、方便、安全、穩定,這種模式中的安全因素是IT運維(其他因素是更好的IT架構等)。從最初的幾臺服務器發展到一個龐大的數據中心,僅靠人工已經不能滿足技術、業務、管理等方面的要求,那么標準化、自動化、降低IT服務成本的架構優化、流程優化等越來越受到人們的重視。其中,以自動化為起點代替人工操作的要求得到了廣泛的研究和應用。
IT運維自誕生和發展以來,自動化作為其重要屬性之一,不僅取代了人工操作,更重要的是解決如何在當前條件下優化業績和服務,同時實現投資收益最大化。自動化對IT運維的影響不僅是人與設備的關系,而且已經發展到以客戶服務為導向的IT運維決策水平,IT運維團隊的組成,包括各級技術人員和業務人員,甚至是廣大的用戶。
因此,IT運維自動化是根據IT服務需求,將靜態設備結構轉化為動態靈活響應的一組策略。目的是實現IT運維的質量,降低成本。可以說自動化一定是IT運維最重要的屬性之一,但并不是全部。
隨著技術的進步和業務需求的快速增長,一個運維人員通常管理成百上千臺服務器,運維工作變得煩瑣和復雜。運維工作自動化,可以將運維人員從服務器的管理中解放出來,使得運維工作簡單、快捷、準確。