零基礎(chǔ)可以使用Python進(jìn)行機(jī)器學(xué)習(xí)。如需使用Python進(jìn)行機(jī)器學(xué)習(xí)推薦選擇【達(dá)內(nèi)教育】。使用Python進(jìn)行機(jī)器學(xué)習(xí),要掌握以下基礎(chǔ):
創(chuàng)新互聯(lián)公司是網(wǎng)站建設(shè)技術(shù)企業(yè),為成都企業(yè)提供專業(yè)的網(wǎng)站設(shè)計制作、網(wǎng)站制作,網(wǎng)站設(shè)計,網(wǎng)站制作,網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制適合企業(yè)的網(wǎng)站。10余年品質(zhì),值得信賴!
1、掌握Python基礎(chǔ)知識。
2、了解Python科學(xué)計算環(huán)境。熟悉4種工具的基礎(chǔ)知識,因?yàn)樗鼈冊诨镜摹綪ython機(jī)器學(xué)習(xí)】中得到了很好的應(yīng)用。
3、分類。分類是監(jiān)督學(xué)習(xí)的主要方法之一,并且執(zhí)行預(yù)測的方式涉及具有類標(biāo)簽的數(shù)據(jù)。
4、回歸。回歸類似于分類,因?yàn)樗潜O(jiān)督學(xué)習(xí)的另一種主要形式,并且對預(yù)測分析有用。
5、聚類。聚類用于分析不包括預(yù)先標(biāo)記的類的數(shù)據(jù)。使用最大化類內(nèi)相似性和最小化不同類之間的相似性的概念將數(shù)據(jù)實(shí)例組合在一起。
6、更多分類。
7、合奏方法。感興趣的話點(diǎn)擊此處,免費(fèi)學(xué)習(xí)一下
想了解更多有關(guān)使用Python進(jìn)行機(jī)器學(xué)習(xí)的相關(guān)信息,推薦咨詢【達(dá)內(nèi)教育】。該機(jī)構(gòu)已從事19年IT技術(shù)培訓(xùn),并且獨(dú)創(chuàng)TTS8.0教學(xué)系統(tǒng),1v1督學(xué),跟蹤式學(xué)習(xí),有疑問隨時溝通。該機(jī)構(gòu)26大課程體系緊跟企業(yè)需求,企業(yè)級項(xiàng)目,課程穿插大廠真實(shí)項(xiàng)目講解,對標(biāo)企業(yè)人才標(biāo)準(zhǔn),制定專業(yè)學(xué)習(xí)計劃,囊括主流熱點(diǎn)技術(shù),助力學(xué)員更好的學(xué)習(xí)。達(dá)內(nèi)IT培訓(xùn)機(jī)構(gòu),試聽名額限時搶購。
1. Numpy
Python沒有提供數(shù)組功能,Numpy可以提供數(shù)組支持以及相應(yīng)的高效處理函數(shù),是Python數(shù)據(jù)分析的基礎(chǔ),也是SciPy、Pandas等數(shù)據(jù)處理和科學(xué)計算庫最基本的函數(shù)功能庫,且其數(shù)據(jù)類型對Python數(shù)據(jù)分析十分有用。
2. Pandas
Pandas是Python強(qiáng)大、靈活的數(shù)據(jù)分析和探索工具,包含Series、DataFrame等高級數(shù)據(jù)結(jié)構(gòu)和工具,安裝Pandas可使Python中處理數(shù)據(jù)非常快速和簡單。
3. SciPy
SciPy是一組專門解決科學(xué)計算中各種標(biāo)準(zhǔn)問題域的包的集合,包含的功能有最優(yōu)化、線性代數(shù)、積分、插值、擬合、特殊函數(shù)、快速傅里葉變換、信號處理和圖像處理、常微分方程求解和其他科學(xué)與工程中常用的計算等,這些對數(shù)據(jù)分析和挖掘十分有用。
4. Matplotlib
Matplotlib是強(qiáng)大的數(shù)據(jù)可視化工具和作圖庫,是主要用于繪制數(shù)據(jù)圖表的Python庫,提供了繪制各類可視化圖形的命令字庫、簡單的接口,可以方便用戶輕松掌握圖形的格式,繪制各類可視化圖形。
5. Scikit-Learn
Scikit-Learn是Python常用的機(jī)器學(xué)習(xí)工具包,提供了完善的機(jī)器學(xué)習(xí)工具箱,支持?jǐn)?shù)據(jù)預(yù)處理、分類、回歸、聚類、預(yù)測和模型分析等強(qiáng)大機(jī)器學(xué)習(xí)庫,其依賴于Numpy、Scipy和Matplotlib等。
6. Keras
Keras是深度學(xué)習(xí)庫,人工神經(jīng)網(wǎng)絡(luò)和深度學(xué)習(xí)模型,基于Theano之上,依賴于Numpy和Scipy,利用它可以搭建普通的神經(jīng)網(wǎng)絡(luò)和各種深度學(xué)習(xí)模型,如語言處理、圖像識別、自編碼器、循環(huán)神經(jīng)網(wǎng)絡(luò)、遞歸審計網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)等。
7. Gensim
Gensim是用來做文本主題模型的庫,常用于處理語言方面的任務(wù),支持TF-IDF、LSA、LDA和Word2Vec在內(nèi)的多種主題模型算法,支持流式訓(xùn)練,并提供了諸如相似度計算、信息檢索等一些常用任務(wù)的API接口。
8. Scrapy
Scrapy是專門為爬蟲而生的工具,具有URL讀取、HTML解析、存儲數(shù)據(jù)等功能,可以使用Twisted異步網(wǎng)絡(luò)庫來處理網(wǎng)絡(luò)通訊,架構(gòu)清晰,且包含了各種中間件接口,可以靈活的完成各種需求。更多python技術(shù),推薦關(guān)注老男孩教育。
Python作為一門理想的集成語言,將各種技術(shù)綁定在一起,除了為用戶提供更方便的功能之外,還是一個理想的粘合平臺,在開發(fā)人員與外部庫的低層次集成人員之間搭建連接,以便用C、C++實(shí)現(xiàn)更高效的算法。
使用Python編程可以快速遷移代碼并進(jìn)行改動,無須花費(fèi)過多的精力在修改代碼與代碼規(guī)范上。開發(fā)者在Python中封裝了很多優(yōu)秀的依賴庫,可以直接拿來使用,常見的機(jī)器學(xué)習(xí)庫如下:
1、Scikit-Learn
Scikit-Learn基于Numpy和Scipy,是專門為機(jī)器學(xué)習(xí)建造的一個Python模塊,提供了大量用于數(shù)據(jù)挖掘和分析的工具,包括數(shù)據(jù)預(yù)處理、交叉驗(yàn)證、算法與可視化算法等一系列接口。
Scikit-Learn基本功能可分為六個部分:分類、回歸、聚類、數(shù)據(jù)降維、模型選擇、數(shù)據(jù)預(yù)處理。其中集成了大量分類、回歸、聚類功能,包括支持向量機(jī)、邏輯回歸、隨機(jī)森林、樸素貝葉斯等。
2、Orange3
Orange3是一個基于組件的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)軟件套裝,支持Python進(jìn)行腳本開發(fā)。它包含一系列的數(shù)據(jù)可視化、檢索、預(yù)處理和建模技術(shù),具有一個良好的用戶界面,同時也可以作為Python的一個模塊使用。
用戶可通過數(shù)據(jù)可視化進(jìn)行數(shù)據(jù)分析,包含統(tǒng)計分布圖、柱狀圖、散點(diǎn)圖,以及更深層次的決策樹、分層聚簇、熱點(diǎn)圖、MDS等,并可使用它自帶的各類附加功能組件進(jìn)行NLP、文本挖掘、構(gòu)建網(wǎng)絡(luò)分析等。
3、XGBoost
XGBoost是專注于梯度提升算法的機(jī)器學(xué)習(xí)函數(shù)庫,因其優(yōu)良的學(xué)習(xí)效果及高效的訓(xùn)練速度而獲得廣泛的關(guān)注。XGBoost支持并行處理,比起同樣實(shí)現(xiàn)了梯度提升算法的Scikit-Learn庫,其性能提升10倍以上。XGBoost可以處理回歸、分類和排序等多種任務(wù)。
4、NuPIC
NuPIC是專注于時間序列的一個機(jī)器學(xué)習(xí)平臺,其核心算法為HTM算法,相比于深度學(xué)習(xí),其更為接近人類大腦的運(yùn)行結(jié)構(gòu)。HTM算法的理論依據(jù)主要是人腦中處理高級認(rèn)知功能的新皮質(zhì)部分的運(yùn)行原理。NuPIC可用于預(yù)測以及異常檢測,使用面非常廣,僅要求輸入時間序列即可。
5、Milk
Milk是Python中的一個機(jī)器學(xué)習(xí)工具包。Milk注重提升運(yùn)行速度與降低內(nèi)存占用,因此大部分對性能敏感的代碼都是使用C++編寫的,為了便利性在此基礎(chǔ)上提供Python接口。重點(diǎn)提供監(jiān)督分類方法,如SVMs、KNN、隨機(jī)森林和決策樹等。
使用python做機(jī)器學(xué)習(xí)的一般都是從k-近鄰算法開始學(xué)習(xí)。
這就很難繞開argsort()函數(shù),但是在使用argsort()函數(shù)時大部分初學(xué)者都會被繞暈進(jìn)去。
argsort()函數(shù)是用來返回數(shù)組值從小到大索引值的。舉例
那么
下面講一下詳細(xì)邏輯:
我們把矩陣a從小到大排序,記排序后的矩陣為b:
矩陣a和b的關(guān)系:
所以a.argsort(),也就是a排序后索引值就是[1,2,0]
PS:索引值相當(dāng)于頁數(shù),是一個排序值,不等于元素的值。
像書的目錄一樣,對于例子中的矩陣,我們有如下索引:
6............0
4............1
5............2
所以排序后b=[4,5,6],用索引值來表達(dá)就是[1,2,0]
Python語言下的機(jī)器學(xué)習(xí)庫
Python是最好的編程語言之一,在科學(xué)計算中用途廣泛:計算機(jī)視覺、人工智能、數(shù)學(xué)、天文等。它同樣適用于機(jī)器學(xué)習(xí)也是意料之中的事。當(dāng)然,它也有些缺點(diǎn);其中一個是工具和庫過于分散。如果你是擁有unix思維(unix-minded)的人,你會覺得每個工具只做一件事并且把它做好是非常方便的。但是你也需要知道不同庫和工具的優(yōu)缺點(diǎn),這樣在構(gòu)建系統(tǒng)時才能做出合理的決策。工具本身不能改善系統(tǒng)或產(chǎn)品,但是使用正確的工具,我們可以工作得更高效,生產(chǎn)率更高。因此了解正確的工具,對你的工作領(lǐng)域是非常重要的。
這篇文章的目的就是列舉并描述Python可用的最有用的機(jī)器學(xué)習(xí)工具和庫。這個列表中,我們不要求這些庫是用Python寫的,只要有Python接口就夠了。我們在最后也有一小節(jié)關(guān)于深度學(xué)習(xí)(Deep Learning)的內(nèi)容,因?yàn)樗罱参讼喈?dāng)多的關(guān)注。
我們的目的不是列出Python中所有機(jī)器學(xué)習(xí)庫(搜索“機(jī)器學(xué)習(xí)”時Python包索引(PyPI)返回了139個結(jié)果),而是列出我們所知的有用并且維護(hù)良好的那些。另外,盡管有些模塊可以用于多種機(jī)器學(xué)習(xí)任務(wù),我們只列出主要焦點(diǎn)在機(jī)器學(xué)習(xí)的庫。比如,雖然Scipy包含一些聚類算法,但是它的主焦點(diǎn)不是機(jī)器學(xué)習(xí)而是全面的科學(xué)計算工具集。因此我們排除了Scipy(盡管我們也使用它!)。
另一個需要提到的是,我們同樣會根據(jù)與其他科學(xué)計算庫的集成效果來評估這些庫,因?yàn)闄C(jī)器學(xué)習(xí)(有監(jiān)督的或者無監(jiān)督的)也是數(shù)據(jù)處理系統(tǒng)的一部分。如果你使用的庫與數(shù)據(jù)處理系統(tǒng)其他的庫不相配,你就要花大量時間創(chuàng)建不同庫之間的中間層。在工具集中有個很棒的庫很重要,但這個庫能與其他庫良好集成也同樣重要。
如果你擅長其他語言,但也想使用Python包,我們也簡單地描述如何與Python進(jìn)行集成來使用這篇文章列出的庫。
Scikit-LearnScikit Learn是我們在CB Insights選用的機(jī)器學(xué)習(xí)工具。我們用它進(jìn)行分類、特征選擇、特征提取和聚集。我們最愛的一點(diǎn)是它擁有易用的一致性API,并提供了很多開箱可用的求值、診斷和交叉驗(yàn)證方法(是不是聽起來很熟悉?Python也提供了“電池已備(譯注:指開箱可用)”的方法)。錦上添花的是它底層使用Scipy數(shù)據(jù)結(jié)構(gòu),與Python中其余使用Scipy、Numpy、Pandas和Matplotlib進(jìn)行科學(xué)計算的部分適應(yīng)地很好。因此,如果你想可視化分類器的性能(比如,使用精確率與反饋率(precision-recall)圖表,或者接收者操作特征(Receiver Operating Characteristics,ROC)曲線),Matplotlib可以幫助進(jìn)行快速可視化。考慮到花在清理和構(gòu)造數(shù)據(jù)的時間,使用這個庫會非常方便,因?yàn)樗梢跃o密集成到其他科學(xué)計算包上。
另外,它還包含有限的自然語言處理特征提取能力,以及詞袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency算法)、預(yù)處理(停用詞/stop-words,自定義預(yù)處理,分析器)。此外,如果你想快速對小數(shù)據(jù)集(toy dataset)進(jìn)行不同基準(zhǔn)測試的話,它自帶的數(shù)據(jù)集模塊提供了常見和有用的數(shù)據(jù)集。你還可以根據(jù)這些數(shù)據(jù)集創(chuàng)建自己的小數(shù)據(jù)集,這樣在將模型應(yīng)用到真實(shí)世界中之前,你可以按照自己的目的來檢驗(yàn)?zāi)P褪欠穹掀谕?shù)最優(yōu)化和參數(shù)調(diào)整,它也提供了網(wǎng)格搜索和隨機(jī)搜索。如果沒有強(qiáng)大的社區(qū)支持,或者維護(hù)得不好,這些特性都不可能實(shí)現(xiàn)。我們期盼它的第一個穩(wěn)定發(fā)布版。
StatsmodelsStatsmodels是另一個聚焦在統(tǒng)計模型上的強(qiáng)大的庫,主要用于預(yù)測性和探索性分析。如果你想擬合線性模型、進(jìn)行統(tǒng)計分析,或者預(yù)測性建模,那么Statsmodels非常適合。它提供的統(tǒng)計測試相當(dāng)全面,覆蓋了大部分情況的驗(yàn)證任務(wù)。如果你是R或者S的用戶,它也提供了某些統(tǒng)計模型的R語法。它的模型同時也接受Numpy數(shù)組和Pandas數(shù)據(jù)幀,讓中間數(shù)據(jù)結(jié)構(gòu)成為過去!
PyMCPyMC是做貝葉斯曲線的工具。它包含貝葉斯模型、統(tǒng)計分布和模型收斂的診斷工具,也包含一些層次模型。如果想進(jìn)行貝葉斯分析,你應(yīng)該看看。
ShogunShogun是個聚焦在支持向量機(jī)(Support Vector Machines, SVM)上的機(jī)器學(xué)習(xí)工具箱,用C++編寫。它正處于積極開發(fā)和維護(hù)中,提供了Python接口,也是文檔化最好的接口。但是,相對于Scikit-learn,我們發(fā)現(xiàn)它的API比較難用。而且,也沒提供很多開箱可用的診斷和求值算法。但是,速度是個很大的優(yōu)勢。
GensimGensim被定義為“人們的主題建模工具(topic modeling for humans)”。它的主頁上描述,其焦點(diǎn)是狄利克雷劃分(Latent Dirichlet Allocation, LDA)及變體。不同于其他包,它支持自然語言處理,能將NLP和其他機(jī)器學(xué)習(xí)算法更容易組合在一起。如果你的領(lǐng)域在NLP,并想進(jìn)行聚集和基本的分類,你可以看看。目前,它們引入了Google的基于遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network)的文本表示法word2vec。這個庫只使用Python編寫。
OrangeOrange是這篇文章列舉的所有庫中唯一帶有圖形用戶界面(Graphical User Interface,GUI)的。對分類、聚集和特征選擇方法而言,它是相當(dāng)全面的,還有些交叉驗(yàn)證的方法。在某些方面比Scikit-learn還要好(分類方法、一些預(yù)處理能力),但與其他科學(xué)計算系統(tǒng)(Numpy, Scipy, Matplotlib, Pandas)的適配上比不上Scikit-learn。但是,包含GUI是個很重要的優(yōu)勢。你可以可視化交叉驗(yàn)證的結(jié)果、模型和特征選擇方法(某些功能需要安裝Graphviz)。對大多數(shù)算法,Orange都有自己的數(shù)據(jù)結(jié)構(gòu),所以你需要將數(shù)據(jù)包裝成Orange兼容的數(shù)據(jù)結(jié)構(gòu),這使得其學(xué)習(xí)曲線更陡。
PyMVPAPyMVPA是另一個統(tǒng)計學(xué)習(xí)庫,API上與Scikit-learn很像。包含交叉驗(yàn)證和診斷工具,但是沒有Scikit-learn全面。
深度學(xué)習(xí)盡管深度學(xué)習(xí)是機(jī)器學(xué)習(xí)的一個子節(jié),我們在這里創(chuàng)建單獨(dú)一節(jié)的原因是,它最新吸引了Google和Facebook人才招聘部門的很多注意。
TheanoTheano是最成熟的深度學(xué)習(xí)庫。它提供了不錯的數(shù)據(jù)結(jié)構(gòu)(張量,tensor)來表示神經(jīng)網(wǎng)絡(luò)的層,對線性代數(shù)來說很高效,與Numpy的數(shù)組類似。需要注意的是,它的API可能不是很直觀,用戶的學(xué)習(xí)曲線會很高。有很多基于Theano的庫都在利用其數(shù)據(jù)結(jié)構(gòu)。它同時支持開箱可用的GPU編程。
PyLearn2還有另外一個基于Theano的庫,PyLearn2,它給Theano引入了模塊化和可配置性,你可以通過不同的配置文件來創(chuàng)建神經(jīng)網(wǎng)絡(luò),這樣嘗試不同的參數(shù)會更容易。可以說,如果分離神經(jīng)網(wǎng)絡(luò)的參數(shù)和屬性到配置文件,它的模塊化能力更強(qiáng)大。
DecafDecaf是最近由UC Berkeley發(fā)布的深度學(xué)習(xí)庫,在Imagenet分類挑戰(zhàn)中測試發(fā)現(xiàn),其神經(jīng)網(wǎng)絡(luò)實(shí)現(xiàn)是很先進(jìn)的(state of art)。
Nolearn如果你想在深度學(xué)習(xí)中也能使用優(yōu)秀的Scikit-learn庫API,封裝了Decaf的Nolearn會讓你能夠更輕松地使用它。它是對Decaf的包裝,與Scikit-learn兼容(大部分),使得Decaf更不可思議。
OverFeatOverFeat是最近貓vs.狗(kaggle挑戰(zhàn))的勝利者,它使用C++編寫,也包含一個Python包裝器(還有Matlab和Lua)。通過Torch庫使用GPU,所以速度很快。也贏得了ImageNet分類的檢測和本地化挑戰(zhàn)。如果你的領(lǐng)域是計算機(jī)視覺,你可能需要看看。
HebelHebel是另一個帶有GPU支持的神經(jīng)網(wǎng)絡(luò)庫,開箱可用。你可以通過YAML文件(與Pylearn2類似)決定神經(jīng)網(wǎng)絡(luò)的屬性,提供了將神級網(wǎng)絡(luò)和代碼友好分離的方式,可以快速地運(yùn)行模型。由于開發(fā)不久,就深度和廣度上說,文檔很匱乏。就神經(jīng)網(wǎng)絡(luò)模型來說,也是有局限的,因?yàn)橹恢С忠环N神經(jīng)網(wǎng)絡(luò)模型(正向反饋,feed-forward)。但是,它是用純Python編寫,將會是很友好的庫,因?yàn)榘芏鄬?shí)用函數(shù),比如調(diào)度器和監(jiān)視器,其他庫中我們并沒有發(fā)現(xiàn)這些功能。
NeurolabNeuroLab是另一個API友好(與Matlabapi類似)的神經(jīng)網(wǎng)絡(luò)庫。與其他庫不同,它包含遞歸神經(jīng)網(wǎng)絡(luò)(Recurrent Neural Network,RNN)實(shí)現(xiàn)的不同變體。如果你想使用RNN,這個庫是同類API中最好的選擇之一。
與其他語言集成你不了解Python但是很擅長其他語言?不要絕望!Python(還有其他)的一個強(qiáng)項(xiàng)就是它是一個完美的膠水語言,你可以使用自己常用的編程語言,通過Python來訪問這些庫。以下適合各種編程語言的包可以用于將其他語言與Python組合到一起:R - RPythonMatlab - matpythonJava - JythonLua - Lunatic PythonJulia - PyCall.jl
不活躍的庫這些庫超過一年沒有發(fā)布任何更新,我們列出是因?yàn)槟阌锌赡軙杏茫沁@些庫不太可能會進(jìn)行BUG修復(fù),特別是未來進(jìn)行增強(qiáng)。MDPMlPyFFnetPyBrain如果我們遺漏了你最愛的Python機(jī)器學(xué)習(xí)包,通過評論讓我們知道。我們很樂意將其添加到文章中。
文章名稱:python機(jī)器學(xué)習(xí)常用函數(shù) Python常用函數(shù)
本文鏈接:http://www.chinadenli.net/article42/docdjec.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、品牌網(wǎng)站設(shè)計、網(wǎng)站收錄、小程序開發(fā)、網(wǎng)站設(shè)計、品牌網(wǎng)站建設(shè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)