機器學習語言
一、機器學習常用的編程語言有哪些?
機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、 凸分析、算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以 獲取新的知識或技能, 重新組織已有的知識結構使之不斷改善自身的性能。 它是人工智能的 核心, 是使計算機具有智能的根本途徑, 其應用遍及人工智能的各個領域, 它主要使用歸納、 綜合而不是演繹。 目前機器學習語言主要有:R 語言,Python,MATLAB、JAVA、WEKA、GO、JavaScript 等。
二、各個語言在機器學習方面的優缺點:
1、R 語言
R 語言是一個開發環境,采用一種近似於 Lisp 的腳本語言。在這個庫中,所有與統計相 關的功能都通過 R 語言提供, 包括一些復雜的圖標。 CRAN(可以認為是機器學習的第三方包) 中的機器學習目錄下的代碼, 是由統計技術方法和其他相關領域中的領軍人物編寫的。 如果 做實驗,或是快速拓展知識,R 語言都是必須學習的。R 的優勢在於有包羅萬象的統計函數 可以調用,特別是在時間序列分析方面(主要用在金融分析與趨勢預測)無論是經典還是前 沿的方法都有相應的包直接使用;相比 python 在這方面貧乏不少。缺點是在處理大數據方 面,性能和速度低下。
2、Python
Python 是一門多功能的語言。數據統計是更多是通過第三方包來實現的。在數據分析、 海量的數據統計、以及提供互動化的數據分析,動態的縮放圖表等綜合功能最強大的。但是 這些功能分散在第三方庫里面,沒有得到有機的整合,相應的學習成本會較高。python 與 R 相比速度要快。python 可以直接處理上 G 的數據;R 不行,R 分析數據時需要先通過數據庫 把大數據轉化為小數據(通過 groupby)才能交給 R 做分析,因此 R 不可能直接分析行為詳 單,只能分析統計結果。Python 的優勢在於其膠水語言的特性,一些底層用 C 寫的算法封 裝在 python 包里后性能非常高效(Python 的數據挖掘包 Orange canve 中的決策樹分析 50 萬 用戶 10 秒出結果,用 R 幾個小時也出不來,8G 內存全部占滿)。
3、MATLAB
作為機器學習、模式識別等方面經常使用的工具,MATLAB 在實現機器學習算法時要比 Python 或者 NumPy 更加自然。很多高校也在計算機科學相關的課程中教授 MATLAB 語言, 易學易用。然而,MATLAB 也存在很多的缺點: 價格昂貴、非開源、性能表現平平、語法不 符合程序員的習慣等。 例如, MATLAB 中矩陣乘積運算操作為 X.dot(Y) , 而 Python 為 X@W , 更加簡潔、明了。MATLAB 的性能比 Python、Go、Java 等語言要差很多。
4、JAVA
在大數據框架中,Mahout(在印地語中意思是“大象騎士”)包 含幾種常見的機器學 習方法。這款軟件包是圍繞算法而非方法,所以需要有一定的算法基礎,其各部分功能是整 合在一起的,比如基於用戶的推薦系統。 另一個基於 Hadoop 的機器學習項目是 Cloudera 公司推行的 Oryx, 其特性在於通過交付 實時流結果而非處理批量作業來對 Mahout 處理結果進行進一步分析。 該該項目現在還處於 初始階段,這只是個項目而非實際產品,但它在不斷改善,所以很值得關注。
除了上述主要針對 Hadoop 的 Mahout, 其他一些面向 Java 的機器學習庫也在廣泛使用。 Weka 由新西蘭懷卡托大學開發的工作台式的應用,它在常見的算法集合中增加了可視化和 數據挖掘功能。對於那些想要為他們的工作打造一個前端或者計划將 Java 作為初始開發的 用戶來說,Weka 可能是最好的選擇。Java-ML 也不錯,但它更適合那些已經習慣將 Java 和 機器學習配合使用的開發者。
5、WEKA
WEKA 是一個數據挖掘工作平台,為用戶提供數一系列據挖掘全過程的 API、命令行和 圖形化用戶接口。可以准備數據、可視化、建立分類、進行回歸分析、建立聚類模型,同時 可以通過第三方插件執行其他算法。
6、Go
谷 歌的系統語言,由於其並行設計,使其似乎是一個編寫機器學習庫理想的環境。雖然 目前與之相關的庫項目規模尚小,但也有一些值得關注, GoLearn,它的開發者將其描述為 一個“內置電池”的機器學習庫。它提供過濾、分類以及回歸分析等多種工具。另一套較小 且更為基礎的庫是 mlgo,雖然目前它能提供的算法數量還非常少,但計划在未來推出更多。
7、JavaScript
關於 JavaScript, 原意是這樣的, 任何能夠由 JavaScript 編寫的內容最終都會由 JavaScript 編寫,這對機器學習庫同樣適用。目前由 JavaScript 編寫的方案在這一領域數量仍然相對較 少,大多數選項僅僅是單一算法而非完整的庫,但已經有部分有用工具漸漸脫穎而出。 ConvNetJS 允許大家直接在瀏覽器當中進行深度學習神經網絡培訓,而名為 brain 則將神經 網絡作為可安裝的 NPM 模塊提供給大家。此外,Encog 庫同樣值得關注,而且它適用於多 種平台:Java、C#、C/C++以及 JavaScript。
一、機器學習常用的編程語言有哪些?
機器學習(Machine Learning, ML)是一門多領域交叉學科,涉及概率論、統計學、逼近論、 凸分析、算法復雜度理論等多門學科。專門研究計算機怎樣模擬或實現人類的學習行為,以 獲取新的知識或技能, 重新組織已有的知識結構使之不斷改善自身的性能。 它是人工智能的 核心, 是使計算機具有智能的根本途徑, 其應用遍及人工智能的各個領域, 它主要使用歸納、 綜合而不是演繹。 目前機器學習語言主要有:R 語言,Python,MATLAB、JAVA、WEKA、GO、JavaScript 等。
二、各個語言在機器學習方面的優缺點:
1、R 語言
R 語言是一個開發環境,采用一種近似於 Lisp 的腳本語言。在這個庫中,所有與統計相 關的功能都通過 R 語言提供, 包括一些復雜的圖標。 CRAN(可以認為是機器學習的第三方包) 中的機器學習目錄下的代碼, 是由統計技術方法和其他相關領域中的領軍人物編寫的。 如果 做實驗,或是快速拓展知識,R 語言都是必須學習的。R 的優勢在於有包羅萬象的統計函數 可以調用,特別是在時間序列分析方面(主要用在金融分析與趨勢預測)無論是經典還是前 沿的方法都有相應的包直接使用;相比 python 在這方面貧乏不少。缺點是在處理大數據方 面,性能和速度低下。
2、Python
Python 是一門多功能的語言。數據統計是更多是通過第三方包來實現的。在數據分析、 海量的數據統計、以及提供互動化的數據分析,動態的縮放圖表等綜合功能最強大的。但是 這些功能分散在第三方庫里面,沒有得到有機的整合,相應的學習成本會較高。python 與 R 相比速度要快。python 可以直接處理上 G 的數據;R 不行,R 分析數據時需要先通過數據庫 把大數據轉化為小數據(通過 groupby)才能交給 R 做分析,因此 R 不可能直接分析行為詳 單,只能分析統計結果。Python 的優勢在於其膠水語言的特性,一些底層用 C 寫的算法封 裝在 python 包里后性能非常高效(Python 的數據挖掘包 Orange canve 中的決策樹分析 50 萬 用戶 10 秒出結果,用 R 幾個小時也出不來,8G 內存全部占滿)。
3、MATLAB
作為機器學習、模式識別等方面經常使用的工具,MATLAB 在實現機器學習算法時要比 Python 或者 NumPy 更加自然。很多高校也在計算機科學相關的課程中教授 MATLAB 語言, 易學易用。然而,MATLAB 也存在很多的缺點: 價格昂貴、非開源、性能表現平平、語法不 符合程序員的習慣等。 例如, MATLAB 中矩陣乘積運算操作為 X.dot(Y) , 而 Python 為 X@W , 更加簡潔、明了。MATLAB 的性能比 Python、Go、Java 等語言要差很多。
4、JAVA
在大數據框架中,Mahout(在印地語中意思是“大象騎士”)包 含幾種常見的機器學 習方法。這款軟件包是圍繞算法而非方法,所以需要有一定的算法基礎,其各部分功能是整 合在一起的,比如基於用戶的推薦系統。 另一個基於 Hadoop 的機器學習項目是 Cloudera 公司推行的 Oryx, 其特性在於通過交付 實時流結果而非處理批量作業來對 Mahout 處理結果進行進一步分析。 該該項目現在還處於 初始階段,這只是個項目而非實際產品,但它在不斷改善,所以很值得關注。
除了上述主要針對 Hadoop 的 Mahout, 其他一些面向 Java 的機器學習庫也在廣泛使用。 Weka 由新西蘭懷卡托大學開發的工作台式的應用,它在常見的算法集合中增加了可視化和 數據挖掘功能。對於那些想要為他們的工作打造一個前端或者計划將 Java 作為初始開發的 用戶來說,Weka 可能是最好的選擇。Java-ML 也不錯,但它更適合那些已經習慣將 Java 和 機器學習配合使用的開發者。
5、WEKA
WEKA 是一個數據挖掘工作平台,為用戶提供數一系列據挖掘全過程的 API、命令行和 圖形化用戶接口。可以准備數據、可視化、建立分類、進行回歸分析、建立聚類模型,同時 可以通過第三方插件執行其他算法。
6、Go
谷 歌的系統語言,由於其並行設計,使其似乎是一個編寫機器學習庫理想的環境。雖然 目前與之相關的庫項目規模尚小,但也有一些值得關注, GoLearn,它的開發者將其描述為 一個“內置電池”的機器學習庫。它提供過濾、分類以及回歸分析等多種工具。另一套較小 且更為基礎的庫是 mlgo,雖然目前它能提供的算法數量還非常少,但計划在未來推出更多。
7、JavaScript
關於 JavaScript, 原意是這樣的, 任何能夠由 JavaScript 編寫的內容最終都會由 JavaScript 編寫,這對機器學習庫同樣適用。目前由 JavaScript 編寫的方案在這一領域數量仍然相對較 少,大多數選項僅僅是單一算法而非完整的庫,但已經有部分有用工具漸漸脫穎而出。 ConvNetJS 允許大家直接在瀏覽器當中進行深度學習神經網絡培訓,而名為 brain 則將神經 網絡作為可安裝的 NPM 模塊提供給大家。此外,Encog 庫同樣值得關注,而且它適用於多 種平台:Java、C#、C/C++以及 JavaScript。
三:相關回答:
1. 機器學習,無非就是提取特征,然后分類,而這其中的大部分在opencv里已經集成了,所以你有必要先學習一下opencv這一開源庫,強大而簡潔。關於入門的資料,你可以看一下csdn的淺墨的文章。他的博客地址
http://blog.csdn.net/poem_qianmo?viewmode=contents,這也是我oepncv入門的資料,共十八課,踏踏實實的跟着坐下來,應該是能入門了,如果不夠,可以買他寫的書,及我大愛的一本
《深入理解opencv》。
2. 關於機器學習,有那么一本書 《機器學習實戰》,是用python寫的,個人覺得很好,不僅簡單的寫了下常用機器學習算法的原理,而且有代碼。python要是不熟悉的話,可以現學現賣,如果你之前學過任何一門語言,那么python學習就會比較簡單,現在在搞深度學習框架,很多框架的都提供了python的接口,python是一門愈來愈熱的語言,有必要學習。
3. 關於視頻分析,我從我從事的智能監控方面來講一下,其實就是圖像的處理,首先要提取視頻中的運動物體,常用算法有:幀差法,GMM,vibe等;提取前景(運動物體)后對其進行跟蹤,跟蹤的主要算法有:camshift,粒子濾波,TLD,壓縮感知等;以及之后對監控視頻的去模糊,去霧,夜視增強,行人檢測,車牌檢測,上下身顏色識別,人車分類、視頻濃縮,不過這些, 都可基於opencv來實現。
4. 機器學習的分支,深度學習,也就是深度神經網絡是近來比較火熱的領域,很多機器學習實現的功能很難用到商用中,比如人臉識別,傳統的機器學習方法受光照,角度干擾太大,很難達到較好的識別率,深度學習在圖像中的應用已經有很多了。這里介紹幾個框架,也是目前我在用的, 伯克利的caffe,以及谷歌的tensorflow,當然這應該是你完成上述前三部門的內容后,才該做的。
2. 關於機器學習,有那么一本書 《機器學習實戰》,是用python寫的,個人覺得很好,不僅簡單的寫了下常用機器學習算法的原理,而且有代碼。python要是不熟悉的話,可以現學現賣,如果你之前學過任何一門語言,那么python學習就會比較簡單,現在在搞深度學習框架,很多框架的都提供了python的接口,python是一門愈來愈熱的語言,有必要學習。
3. 關於視頻分析,我從我從事的智能監控方面來講一下,其實就是圖像的處理,首先要提取視頻中的運動物體,常用算法有:幀差法,GMM,vibe等;提取前景(運動物體)后對其進行跟蹤,跟蹤的主要算法有:camshift,粒子濾波,TLD,壓縮感知等;以及之后對監控視頻的去模糊,去霧,夜視增強,行人檢測,車牌檢測,上下身顏色識別,人車分類、視頻濃縮,不過這些, 都可基於opencv來實現。
4. 機器學習的分支,深度學習,也就是深度神經網絡是近來比較火熱的領域,很多機器學習實現的功能很難用到商用中,比如人臉識別,傳統的機器學習方法受光照,角度干擾太大,很難達到較好的識別率,深度學習在圖像中的應用已經有很多了。這里介紹幾個框架,也是目前我在用的, 伯克利的caffe,以及谷歌的tensorflow,當然這應該是你完成上述前三部門的內容后,才該做的。