PYTHON 和R的對比

爲了鼓勵新工具的出現,機器學習和數據分析領域彷佛已經成了「開源」的天下。Python 和 R 語言都具備健全的生態系統,其中包括了不少開源工具和資源庫,從而可以幫助任何水平層級的數據科學家展現其分析工做。程序員

機器學習和數據分析之間的差別有些難以言明,但兩者最主要的不一樣就在於,比起模型的可解釋性,機器學習更增強調預測的準確性;而數據分析則更加看重模型的可解釋性以及統計推斷。Python ,因爲更看重預測結果的準確性,使其成爲機器學習的一把利器。 R ,做爲一種以統計推斷爲導向的編程語言,在數據分析界也獲得普遍應用。web

固然,這並不表明兩者只能在各自的一個領域中獲得應用。Python 也能夠高效地完成數據分析工做,R 在機器學習中也具備必定的靈活性。它們都擁有至關多的資源庫去實現彼此特定的函數功能,好比 Python 就有不少資源庫來提升本身統計推斷的能力,R 也有不少包能夠提高預測的準確率。算法

Python 中關於機器學習和數據分析的包

Python,R,機器學習,數據分析,算法雖然 Python 自己就更傾向於機器學習, 但它仍是有不少包能夠進一步優化這一屬性。PyBrain 是一個模塊化的機器學習資源庫,其中包含不少有效的算法能夠知足機器學習任務的須要。除了不少直觀靈活的算法,這個資源庫還內置不少環境能夠用來檢驗和比較這些機器學習算法的效果。編程

Scikit-learn 多是 Python 最受歡迎的機器學習資源庫了。基於 Numpy 和 Scipy ,scikit-learn 提供大量用於數據挖掘和分析的工具,從而提升了 Python 本就出色的機器學習可用性。NumPy 和 SciPy 各自爲戰,雖然它們是 Python 中數據分析的核心部分,但數據分析家更可能僅僅原生地去使用它們,而不是基於一個更高的角度。 Scikit-learn 卻將兩者結合成爲一個機器學習資源庫,同時也下降了你們的學習門檻。網絡

在數據分析領域,Python 也因幾個庫而包受推崇。 做爲其中最爲著名的庫之一,Pandas 爲 Python 提供了高性能處理的數據結構和數據分析工具。如同其餘不少 Python 的庫同樣,從你着手一個新項目到真正作些有價值的工做這過程的時間將會因它大大縮短。若是你執着於 Python 同時又但願使用 R 的功能, RPy2 庫可以提供全部 R 的主要功能,並給你一個 R 在 Python 中使用的流暢化體驗。數據結構

R 中關於機器學習和數據分析的包

Python,R,機器學習,數據分析,算法就像 Python 同樣,R 也擁有大量的包來提高它的表現。要想在機器學習領域媲美 Python,R 中的 Nnet 包具備快速構建神經網絡模型的能力。經過提供一系列函數來提高所構建模型的有效性,Caret 包也能夠增強 R 在機器學習的能力。機器學習

就 R 在數據分析領域的表現,仍然有不少包能夠用來提高它本就出色的能力。不論是建模前的準備,建模,以及建模後的分析工做,R 都有不少包能夠勝任。這些包大多專門用來完成特定的任務,好比數據的可視化,連續變量回歸和模型驗證。編程語言

兩種編程語言都擁有如此多交叉功能的資源庫和包,你會選擇哪一種編程語言做爲伴你在數據戰場廝殺的武器呢?模塊化

在機器學習和數據分析中的 Python

Python,R,機器學習,數據分析,算法若是你已經有一些編程的基礎了,Python 可能更加適合你。相較於 R ,Python 的語法結構與其餘編程語言更加相似,便於上手。此外,就像是口頭語同樣, Python 代碼的可讀性也是無人能及的。這種代碼的可讀性更增強調提升生產力,而 R 非標準的代碼可能會致使在編程進程中的磕絆。函數

Python 是一種很靈活的編程語言,因此若是你打算把已經完成的機器學習或者數據分析的項目移植到其餘領域,那麼使用 Python 可使你沒必要再去學習新的編程語言。

Python 的靈活性也使得它很是適用於生產。舉個例子,當數據分析的任務須要與 Web 應用程序相整合的時候,你仍然可使用 Python 且不須要和其餘編程語言相整合。而雖然 R 是一個很好的數據分析的工具,但它在數據分析以外的領域卻有所限制。

若是你剛入門編程,對那些「標準化」的語法並不熟悉,那麼不管哪一種編程語言的學習曲線對你而言都差很少。但要是你但願跨過機器學習和數據分析的門檻,Python 多是更好的選擇。特別是 Python 有 scikit-learn 庫的加持。這個庫表現良好且更新頻繁。 R 可能有不少包,但顯得有些零亂且一致性較差。

在機器學習和數據分析中的 R

Python,R,機器學習,數據分析,算法目前, R 主要是用在科研和調查工做中。然而,隨着 R 逐漸擴展到商業領域,這一現狀也開始獲得改變。 R 是由統計學家所創造出來的,所以它能夠很輕易地管理基本的數據結構。給數據打標籤,填充缺失值,篩選等等這些對於 R 而言很容易就能夠實現,R 也更增強調易於操做的數據分析,統計和圖形化模型工做。

因爲 R 是做爲統計性的編程語言而構建的,所以它具備很好的統計方面的支持。它可以很好地展示統計學家的思惟,因此若是你具備統計背景的話,用起來會很順手。諸如像 statsmodels 包可以基本覆蓋 Python 中的統計模型,並且 R 中與統計模型相關的包功能會更增強大。對於剛入門的程序員, R 只須要寫幾行代碼就可以構建模型了,這樣一來,它會比 Python 更容易解釋一些。

R 中與 Python 的 pandas 庫功能最爲接近的大概就是 dplyr 包了,只不過它會比 pandas 庫限制得更多。雖然這聽起來不太好,但實際上使用 dplyr 包時會促使你更專一於尋求問題的解決之道,並且 dplyr 包的代碼也比 pandas 庫更容易理解。

選擇你本身的編程語言吧

R 最大的問題在於一致性不夠好。其中的算法流程被分紅三塊,使得它們相對而言不夠統一。你不得不學習新的方法來建模並用新的算法來作預測,伴隨這個過程,結果的有效性將會明顯降低。你須要理解每一個包是怎麼用的,一樣地,R 中包的幫助文檔因爲不夠完整,一致性也很差。

不過,要是你須要一個數據分析的工具用於學術, R 絕對能夠勝任這項工做。 Python 則被普遍地用於商業也更便於協做,不過 R 也愈來愈獲得重視了。不論是平常的使用和機器學習,仍是經過和 R 通常衆多的包來作數據分析, Python 都能作到,所以也更推薦使用 Python 。

若是你對 R 還比較陌生,不如學習 Python 並經過 RPy2 包來實現 R 的功能。 這樣一來,你就能夠在一種編程語言裏同時使用兩者的功能,並且因爲不少公司已經開發了在 Python 中使用的生產系統, Python 可謂生產力高效。這點在 R 中就不適用了。一旦你學會了 RPy2 ,再想跳到 R 裏面並無那麼複雜,不過反過來就相對而言困可貴多了。

無論你想解決什麼類型的問題, Python 和 R 都有功能相近的資源庫可使用。每種編程語言都有不少的分支、模塊、集成開發環境和算法,以致於你難以出什麼大的紕漏。不過要是你但願使用一個靈活性強,擴展性好,多功能又能勝任機器學習和數據分析工做的編程語言, Python 或許是明智之選。

相關文章
相關標籤/搜索