精品专区-精品自拍9-精品自拍三级乱伦-精品自拍视频-精品自拍视频曝光-精品自拍小视频

網站建設資訊

NEWS

網站建設資訊

交叉驗證函數python 交叉驗證公式

Python語言下的機器學習庫

Python語言下的機器學習庫

網站建設哪家好,找創新互聯!專注于網頁設計、網站建設、微信開發、重慶小程序開發、集團企業網站建設等服務項目。為回饋新老客戶創新互聯還提供了合水免費建站歡迎大家使用!

Python是最好的編程語言之一,在科學計算中用途廣泛:計算機視覺、人工智能、數學、天文等。它同樣適用于機器學習也是意料之中的事。當然,它也有些缺點;其中一個是工具和庫過于分散。如果你是擁有unix思維(unix-minded)的人,你會覺得每個工具只做一件事并且把它做好是非常方便的。但是你也需要知道不同庫和工具的優缺點,這樣在構建系統時才能做出合理的決策。工具本身不能改善系統或產品,但是使用正確的工具,我們可以工作得更高效,生產率更高。因此了解正確的工具,對你的工作領域是非常重要的。

這篇文章的目的就是列舉并描述Python可用的最有用的機器學習工具和庫。這個列表中,我們不要求這些庫是用Python寫的,只要有Python接口就夠了。我們在最后也有一小節關于深度學習(Deep Learning)的內容,因為它最近也吸引了相當多的關注。

我們的目的不是列出Python中所有機器學習庫(搜索“機器學習”時Python包索引(PyPI)返回了139個結果),而是列出我們所知的有用并且維護良好的那些。另外,盡管有些模塊可以用于多種機器學習任務,我們只列出主要焦點在機器學習的庫。比如,雖然Scipy包含一些聚類算法,但是它的主焦點不是機器學習而是全面的科學計算工具集。因此我們排除了Scipy(盡管我們也使用它!)。

另一個需要提到的是,我們同樣會根據與其他科學計算庫的集成效果來評估這些庫,因為機器學習(有監督的或者無監督的)也是數據處理系統的一部分。如果你使用的庫與數據處理系統其他的庫不相配,你就要花大量時間創建不同庫之間的中間層。在工具集中有個很棒的庫很重要,但這個庫能與其他庫良好集成也同樣重要。

如果你擅長其他語言,但也想使用Python包,我們也簡單地描述如何與Python進行集成來使用這篇文章列出的庫。

Scikit-LearnScikit Learn是我們在CB Insights選用的機器學習工具。我們用它進行分類、特征選擇、特征提取和聚集。我們最愛的一點是它擁有易用的一致性API,并提供了很多開箱可用的求值、診斷和交叉驗證方法(是不是聽起來很熟悉?Python也提供了“電池已備(譯注:指開箱可用)”的方法)。錦上添花的是它底層使用Scipy數據結構,與Python中其余使用Scipy、Numpy、Pandas和Matplotlib進行科學計算的部分適應地很好。因此,如果你想可視化分類器的性能(比如,使用精確率與反饋率(precision-recall)圖表,或者接收者操作特征(Receiver Operating Characteristics,ROC)曲線),Matplotlib可以幫助進行快速可視化。考慮到花在清理和構造數據的時間,使用這個庫會非常方便,因為它可以緊密集成到其他科學計算包上。

另外,它還包含有限的自然語言處理特征提取能力,以及詞袋(bag of words)、tfidf(Term Frequency Inverse Document Frequency算法)、預處理(停用詞/stop-words,自定義預處理,分析器)。此外,如果你想快速對小數據集(toy dataset)進行不同基準測試的話,它自帶的數據集模塊提供了常見和有用的數據集。你還可以根據這些數據集創建自己的小數據集,這樣在將模型應用到真實世界中之前,你可以按照自己的目的來檢驗模型是否符合期望。對參數最優化和參數調整,它也提供了網格搜索和隨機搜索。如果沒有強大的社區支持,或者維護得不好,這些特性都不可能實現。我們期盼它的第一個穩定發布版。

StatsmodelsStatsmodels是另一個聚焦在統計模型上的強大的庫,主要用于預測性和探索性分析。如果你想擬合線性模型、進行統計分析,或者預測性建模,那么Statsmodels非常適合。它提供的統計測試相當全面,覆蓋了大部分情況的驗證任務。如果你是R或者S的用戶,它也提供了某些統計模型的R語法。它的模型同時也接受Numpy數組和Pandas數據幀,讓中間數據結構成為過去!

PyMCPyMC是做貝葉斯曲線的工具。它包含貝葉斯模型、統計分布和模型收斂的診斷工具,也包含一些層次模型。如果想進行貝葉斯分析,你應該看看。

ShogunShogun是個聚焦在支持向量機(Support Vector Machines, SVM)上的機器學習工具箱,用C++編寫。它正處于積極開發和維護中,提供了Python接口,也是文檔化最好的接口。但是,相對于Scikit-learn,我們發現它的API比較難用。而且,也沒提供很多開箱可用的診斷和求值算法。但是,速度是個很大的優勢。

GensimGensim被定義為“人們的主題建模工具(topic modeling for humans)”。它的主頁上描述,其焦點是狄利克雷劃分(Latent Dirichlet Allocation, LDA)及變體。不同于其他包,它支持自然語言處理,能將NLP和其他機器學習算法更容易組合在一起。如果你的領域在NLP,并想進行聚集和基本的分類,你可以看看。目前,它們引入了Google的基于遞歸神經網絡(Recurrent Neural Network)的文本表示法word2vec。這個庫只使用Python編寫。

OrangeOrange是這篇文章列舉的所有庫中唯一帶有圖形用戶界面(Graphical User Interface,GUI)的。對分類、聚集和特征選擇方法而言,它是相當全面的,還有些交叉驗證的方法。在某些方面比Scikit-learn還要好(分類方法、一些預處理能力),但與其他科學計算系統(Numpy, Scipy, Matplotlib, Pandas)的適配上比不上Scikit-learn。但是,包含GUI是個很重要的優勢。你可以可視化交叉驗證的結果、模型和特征選擇方法(某些功能需要安裝Graphviz)。對大多數算法,Orange都有自己的數據結構,所以你需要將數據包裝成Orange兼容的數據結構,這使得其學習曲線更陡。

PyMVPAPyMVPA是另一個統計學習庫,API上與Scikit-learn很像。包含交叉驗證和診斷工具,但是沒有Scikit-learn全面。

深度學習盡管深度學習是機器學習的一個子節,我們在這里創建單獨一節的原因是,它最新吸引了Google和Facebook人才招聘部門的很多注意。

TheanoTheano是最成熟的深度學習庫。它提供了不錯的數據結構(張量,tensor)來表示神經網絡的層,對線性代數來說很高效,與Numpy的數組類似。需要注意的是,它的API可能不是很直觀,用戶的學習曲線會很高。有很多基于Theano的庫都在利用其數據結構。它同時支持開箱可用的GPU編程。

PyLearn2還有另外一個基于Theano的庫,PyLearn2,它給Theano引入了模塊化和可配置性,你可以通過不同的配置文件來創建神經網絡,這樣嘗試不同的參數會更容易。可以說,如果分離神經網絡的參數和屬性到配置文件,它的模塊化能力更強大。

DecafDecaf是最近由UC Berkeley發布的深度學習庫,在Imagenet分類挑戰中測試發現,其神經網絡實現是很先進的(state of art)。

Nolearn如果你想在深度學習中也能使用優秀的Scikit-learn庫API,封裝了Decaf的Nolearn會讓你能夠更輕松地使用它。它是對Decaf的包裝,與Scikit-learn兼容(大部分),使得Decaf更不可思議。

OverFeatOverFeat是最近貓vs.狗(kaggle挑戰)的勝利者,它使用C++編寫,也包含一個Python包裝器(還有Matlab和Lua)。通過Torch庫使用GPU,所以速度很快。也贏得了ImageNet分類的檢測和本地化挑戰。如果你的領域是計算機視覺,你可能需要看看。

HebelHebel是另一個帶有GPU支持的神經網絡庫,開箱可用。你可以通過YAML文件(與Pylearn2類似)決定神經網絡的屬性,提供了將神級網絡和代碼友好分離的方式,可以快速地運行模型。由于開發不久,就深度和廣度上說,文檔很匱乏。就神經網絡模型來說,也是有局限的,因為只支持一種神經網絡模型(正向反饋,feed-forward)。但是,它是用純Python編寫,將會是很友好的庫,因為包含很多實用函數,比如調度器和監視器,其他庫中我們并沒有發現這些功能。

NeurolabNeuroLab是另一個API友好(與Matlabapi類似)的神經網絡庫。與其他庫不同,它包含遞歸神經網絡(Recurrent Neural Network,RNN)實現的不同變體。如果你想使用RNN,這個庫是同類API中最好的選擇之一。

與其他語言集成你不了解Python但是很擅長其他語言?不要絕望!Python(還有其他)的一個強項就是它是一個完美的膠水語言,你可以使用自己常用的編程語言,通過Python來訪問這些庫。以下適合各種編程語言的包可以用于將其他語言與Python組合到一起:R - RPythonMatlab - matpythonJava - JythonLua - Lunatic PythonJulia - PyCall.jl

不活躍的庫這些庫超過一年沒有發布任何更新,我們列出是因為你有可能會有用,但是這些庫不太可能會進行BUG修復,特別是未來進行增強。MDPMlPyFFnetPyBrain如果我們遺漏了你最愛的Python機器學習包,通過評論讓我們知道。我們很樂意將其添加到文章中。

python寫算法不好

基于以下三個原因,我們選擇Python作為實現機器學習算法的編程語言:(1) python的語法清晰;(2) 易于操作純文本文件;(3) 使用廣泛,存在大量的開發文檔。

可執行偽代碼

Python具有清晰的語法結構,大家也把它稱作可執行偽代碼(executable pseudo-code)。默認安裝的Python開發環境已經附帶了很多高級數據類型,如列表、元組、字典、集合、隊列等,無需進一步編程就可以使用這些數據類型的操作。使用這些數據類型使得實現抽象的數學概念非常簡單。此外,讀者還可以使用自己熟悉的編程風格,如面向對象編程、面向過程編程、或者函數式編程。

Python語言處理和操作文本文件非常簡單,非常易于處理非數值型數據。Python語言提供了豐富的正則表達式函數以及很多訪問Web頁面的函數庫,使得從HTML中提取數據變得非常簡單直觀。

Python比較流行

Python語言使用廣泛,代碼范例也很多,便于讀者快速學習和掌握。此外,在開發實際應用程序時,也可以利用豐富的模塊庫縮短開發周期。

在科學和金融領域,Python語言得到了廣泛應用。SciPy和NumPy等許多科學函數庫都實現了向量和矩陣操作,這些函數庫增加了代碼的可讀性,學過線性代數的人都可以看懂代碼的實際功能。另外,科學函數庫SciPy和NumPy使用底層語言(C和Fortran)編寫,提高了相關應用程序的計算性能。本書將大量使用Python的NumPy。

Python的科學工具可以與繪圖工具Matplotlib協同工作。Matplotlib可以繪制2D、3D圖形,也可以處理科學研究中經常使用到的圖形,所以本書也將大量使用Matplotlib。

Python開發環境還提供了交互式shell環境,允許用戶開發程序時查看和檢測程序內容。

Python開發環境將來還會集成Pylab模塊,它將NumPy、SciPy和Matplotlib合并為一個開發環境。在本書寫作時,Pylab還沒有并入Python環境,但是不遠的將來我們肯定可以在Python開發環境找到它。

Python語言的特色

諸如MATLAB和Mathematica等高級程序語言也允許用戶執行矩陣操作,MATLAB甚至還有許多內嵌的特征可以輕松地構造機器學習應用,而且MATLAB的運算速度也很快。然而MATLAB的不足之處是軟件費用太高,單個軟件授權就要花費數千美元。雖然也有適合MATLAB的第三方插件,但是沒有一個有影響力的大型開源項目。

Java和C等強類型程序設計語言也有矩陣數學庫,然而對于這些程序設計語言來說,最大的問題是即使完成簡單的操作也要編寫大量的代碼。程序員首先需要定義變量的類型,對于Java來說,每次封裝屬性時還需要實現getter和setter方法。另外還要記著實現子類,即使并不想使用子類,也必須實現子類方法。為了完成一個簡單的工作,我們必須花費大量時間編寫了很多無用冗長的代碼。Python語言則與Java和C完全不同,它清晰簡練,而且易于理解,即使不是編程人員也能夠理解程序的含義,而Java和C對于非編程人員則像天書一樣難于理解。

所有人在小學二年級已經學會了寫作,然而大多數人必須從事其他更重要的工作。

——鮑比·奈特

也許某一天,我們可以在這句話中將“寫作”替代為“編寫代碼”,雖然有些人對于編寫代碼很感興趣,但是對于大多數人來說,編程僅是完成其他任務的工具而已。Python語言是高級編程語言,我們可以花費更多的時間處理數據的內在含義,而無須花費太多精力解決計算機如何得到數據結果。Python語言使得我們很容易表達自己的目的。

Python語言的缺點

Python語言唯一的不足是性能問題。Python程序運行的效率不如Java或者C代碼高,但是我們可以使用Python調用C編譯的代碼。這樣,我們就可以同時利用C和Python的優點,逐步地開發機器學習應用程序。我們可以首先使用Python編寫實驗程序,如果進一步想要在產品中實現機器學習,轉換成C代碼也不困難。如果程序是按照模塊化原則組織的,我們可以先構造可運行的Python程序,然后再逐步使用C代碼替換核心代碼以改進程序的性能。C++ Boost庫就適合完成這個任務,其他類似于Cython和PyPy的工具也可以編寫強類型的Python代碼,改進一般Python程序的性能。

如果程序的算法或者思想有缺陷,則無論程序的性能如何,都無法得到正確的結果。如果解決問題的思想存在問題,那么單純通過提高程序的運行效率,擴展用戶規模都無法解決這個核心問題。從這個角度來看,Python快速實現系統的優勢就更加明顯了,我們可以快速地檢驗算法或者思想是否正確,如果需要,再進一步優化代碼。

python有哪些庫

Python中6個最重要的庫:

第一、NumPy

NumPy是Numerical

Python的簡寫,是Python數值計算的基石。它提供多種數據結構、算法以及大部分涉及Python數值計算所需的接口。NumPy還包括其他內容:

①快速、高效的多維數組對象ndarray

②基于元素的數組計算或數組間數學操作函數

③用于讀寫硬盤中基于數組的數據集的工具

④線性代數操作、傅里葉變換以及隨機數生成

除了NumPy賦予Python的快速數組處理能力之外,NumPy的另一個主要用途是在算法和庫之間作為數據傳遞的數據容器。對于數值數據,NumPy數組能夠比Python內建數據結構更為高效地存儲和操作數據。

第二、pandas

pandas提供了高級數據結構和函數,這些數據結構和函數的設計使得利用結構化、表格化數據的工作快速、簡單、有表現力。它出現于2010年,幫助Python成為強大、高效的數據分析環境。常用的pandas對象是DataFrame,它是用于實現表格化、面向列、使用行列標簽的數據結構;以及Series,一種一維標簽數組對象。

pandas將表格和關系型數據庫的靈活數據操作能力與Numpy的高性能數組計算的理念相結合。它提供復雜的索引函數,使得數據的重組、切塊、切片、聚合、子集選擇更為簡單。由于數據操作、預處理、清洗在數據分析中是重要的技能,pandas將是重要主題。

第三、matplotlib

matplotlib是最流行的用于制圖及其他二維數據可視化的Python庫,它由John D.

Hunter創建,目前由一個大型開發者團隊維護。matplotlib被設計為適合出版的制圖工具。

對于Python編程者來說也有其他可視化庫,但matplotlib依然使用最為廣泛,并且與生態系統的其他庫良好整合。

第四、IPython

IPython項目開始于2001年,由Fernando

Pérez發起,旨在開發一個更具交互性的Python解釋器。在過去的16年中,它成為Python數據技術棧中最重要的工具之一。

盡管它本身并不提供任何計算或數據分析工具,它的設計側重于在交互計算和軟件開發兩方面將生產力最大化。它使用了一種執行-探索工作流來替代其他語言中典型的編輯-編譯-運行工作流。它還提供了針對操作系統命令行和文件系統的易用接口。由于數據分析編碼工作包含大量的探索、試驗、試錯和遍歷,IPython可以使你更快速地完成工作。

第五、SciPy

SciPy是科學計算領域針對不同標準問題域的包集合。以下是SciPy中包含的一些包:

①scipy.integrate數值積分例程和微分方程求解器

②scipy.linalg線性代數例程和基于numpy.linalg的矩陣分解

③scipy.optimize函數優化器和求根算法

④scipy.signal信號處理工具

⑤scipy.sparse稀疏矩陣與稀疏線性系統求解器

SciPy與Numpy一起為很多傳統科學計算應用提供了一個合理、完整、成熟的計算基礎。

第六、scikit-learn

scikit-learn項目誕生于2010年,目前已成為Python編程者首選的機器學習工具包。僅僅七年,scikit-learn就擁有了全世界1500位代碼貢獻者。其中包含以下子模塊:

①分類:SVM、最近鄰、隨機森林、邏輯回歸等

②回歸:Lasso、嶺回歸等

③聚類:K-means、譜聚類等

④降維:PCA、特征選擇、矩陣分解等

⑤模型選擇:網格搜索、交叉驗證、指標矩陣

⑥預處理:特征提取、正態化

scikit-learn與pandas、statsmodels、IPython一起使Python成為高效的數據科學編程語言。


當前文章:交叉驗證函數python 交叉驗證公式
網站地址:http://m.jcarcd.cn/article/doojpoc.html
主站蜘蛛池模板: 成人免费黄 | 黑人上日 | 欧美中文日韩aⅴ | 日韩欧美亚洲精品 | 国产传媒 | 国产高清不 | 欧美三级一区二区 | 精品国产a自拍 | 蜜桃视频午夜 | 国产一区人妖综合 | 日韩午夜高清免费 | 日本不卡一区二 | 国产欧美日韩在 | 福利小视频在线 | 国产极品视频 | 国产精品天干天干 | 国产理论| 午夜电影一区 | 国产萝控精 | 欧美一级视频在 | 国产美女一级视频 | 国产福利导航大全 | 国产欧美大片一区 | 国产拍偷 | 日韩性爱视频合集 | 成人午夜免费视频 | 国产成a人亚洲精∨ | 国产毛多水多 | 国产中文字幕免费 | 国产综合一区 | 国产人成视频免费看 | 国产乱人免费视频 | 91新福利在线观看 | 91爱在线免费观看 | 国产五月综合网 | 国产高清视频在线观 | 日本中文字幕免费 | 国产欧美在线观看 | 91抖音app下载 | 日本免费成人VA | 97成人免费视频 |