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