隨著大數據的興起,Python 和機器學習迅速成為時代的寵兒。本書在內容編排上避免了枯燥的理論知識講解,依循“理論簡述——實際數據集——Python 程序實現算法”分析數據的思路,根據實際數據集的分析目的,采用合適的主流機器學習算法來解決問題。全書共12章,其中第1 ~ 4 章介紹了機器學習的基礎知識;第5 ~ 12 章討論了在面對不同的數據時,如何采用一些主流的算法來解決問題,主要包括回歸分析、關聯規(guī)則、無監(jiān)督學習、文本LDA 模型、決策樹和集成學習、樸素貝葉斯和K 近鄰分類、支持向量機和神經網絡,以及深度學習入門等內容。針對每個算法,都給出Python 代碼實現算法建模的過程,并結合可視化技術,幫助讀者更好地理解算法和分析結果。
什么是機器學習呢?說白了就是讓機器代替人工從數據中發(fā)掘我們所需要的信息,如果對于海量的數據來說,對于人工來做的話將花費大量的人力物力,所以將這項任務交給計算機來做,人們來做更加高級的任務。 那么怎樣能夠讓機器進行學習呢?首先對于人來說,比如讓人的肉眼去識別兩種植物的圖片,如果要求人的識別精度很高的話,那么就需要人類在識別之前觀察大量的兩種植物圖片,來進行積累經驗,以至于之后人們再次見到類似圖片時,能夠精確的分析出圖片的內容。這種學習方式對于人類來說比較容易,因為人類有大腦參與可以進行記憶分析,那么對于計算機來說,那么怎么去記住這么多的數據,然后去識別新的數據呢?無非就是建立自變量與因變量之間的某種關系來達到預測學習的作用,這里的自變量就是我們數據的特征,因變量就是數據對應的標簽,這就會用到很多常見的機器學習算法,例如隨機森林,SVM、支持向量機等算法。
現在我們的生活中有很多機器學習算法的應用,比如說當我們逛淘寶時,淘寶會不斷地向我們進行推薦我們之前看過的物品,這是基于關系規(guī)則的商品推薦,還有就是最近很火的圖像識別,它是利用了深度學習方面的技術。我們在不同的場景下,可以使用不同的算法來實現我們的需求。
有人問?有沒有那種非常無敵的算法,其實這個問題很難回答,每種算法有自己使用的領域,針對不用的使用場景需要用到不同的東西,有的算法可能精度非常高,但是可能它的底層的計算方法相當復雜,可能模型運行的時間會相當高,有的算法雖然精度差一些,但是它的速度方面可能略強于別的算法,所以沒有什么強不強的,就是看自己的需求有針對性地使用合理地算法。
Python應用的領域包括如下場景。
(1)Web應用開發(fā)
Python經常被用于Web開發(fā)。例如,通過mod_wsgi模塊,Apache可以運行用Python編寫的Web程序。Python定義了WSGI標準應用接口來協調HTTP服務器與基于Python的Web程序之間的通信。一些Web框架,如Django、TurboGears、web2py、Zope等,可以讓程序員輕松地開發(fā)和管理復雜的Web程序。
(2)操作系統(tǒng)管理、服務器運維的自動化腳本
在很多操作系統(tǒng)里,Python是標準的系統(tǒng)組件。大多數Linux發(fā)行版以及NetBSD、OpenBSD和Mac OS X都集成了Python,可以在終端下直接運行Python。有一些Linux發(fā)行版的安裝器使用Python語言編寫,如Ubuntu的Ubiquity安裝器、Red Hat Linux和Fedora的Anaconda安裝器。Gentoo Linux使用Python來編寫它的Portage(包管理系統(tǒng))。Python標準庫包含了多個調用操作系統(tǒng)功能的庫。通過pywin32這個第三方軟件包,Python能夠訪問Windows的COM服務及其他WindowsAPI。使用IronPython,Python能夠直接調用.Net Framework。一般說來,Python編寫的系統(tǒng)管理腳本在可讀性、性能、代碼重用度、擴展性幾方面都優(yōu)于普通的shell腳本。
(3)科學計算
NumPy、SciPy、Matplotlib可以讓Python程序員編寫科學計算程序。
(4)桌面軟件
PyQt、PySide、wxPython、PyGTK是Python快速開發(fā)桌面應用程序的利器。
(5)服務器軟件(網絡軟件)
Python對于各種網絡協議的支持都很完善,所以經常被用于編寫服務器軟件、網絡爬蟲。第三方庫Twisted支持異步網絡編程和多數標準的網絡協議(包含客戶端和服務器),并且提供了多種工具,被廣泛用于編寫高性能的服務器軟件。
(6)游戲
很多游戲使用C++編寫圖形顯示等高性能模塊,而使用Python或者Lua編寫游戲的邏輯、服務器。相較于Python,Lua的功能更簡單,體積更小;而Python則支持更多的特性和數據類型。
隨著數據科學(Data Science)技術的興起,人工智能(ArtificialIntelligence)、機器學習(Machine Learning) 成為近幾年來計算機科學界十分熱門的研究領域,如今在實體和在線的學習機器學習的資源有很多,本文整理了一些好用學習資源希望幫助初學者能更容易使用 Python 入門機器學習的領域中,從零開始學習機器學習。若是對于數據科學不熟悉的讀者可以先參考適用于初學者的資料科學影片 ,讓自己對于數據科學有初步的認識。
在數據科學和機器學習領域最重要的兩大程序語言就是Python 和R,Python 簡潔易學、應用范圍廣(不限于數據分析)且學習曲線平緩,適合作為第一個入門的程序語言,透過pandas、SciPy/NumPy、sckikit-learn、matplotlib和statsmodels 可以進行數據分析的工作,適合工程任務和需要和網絡應用程序整合的項目。至于R 由于是統(tǒng)計學家開發(fā)的程序語言,則是擅長于統(tǒng)計分析、圖表繪制,常用于學術研究領域,建議也要有一定程度的掌握。一般情況下Python 和R 并非互斥,而是互補,許多數據工程師、科學家往往是在Python 和R 兩個語言中轉換,小量模型驗證、統(tǒng)計分析和圖表繪制使用R,當要撰寫算法和數據庫、網絡服務互動等情況時在移轉到Python。為了降低學習成本。
此外Python本身是一種通用語言,除了數據科學外也可以廣泛使用在 網絡開發(fā)、網站建置、游戲開發(fā)、網絡爬蟲等領域,當你需要整合系統(tǒng)產品服務時,可以擔任一站式的開發(fā)語言,更重要的是 Python 也可以當成 膠水語言非常輕易和 C/C++ 等效能較佳的語言整合。簡而言之,Python是一種簡潔易學但功能強大,值得投資的程序語言,所以我們這邊先使用Python 進行介紹。