數(shù)據(jù)學(xué)習(xí)(DataLearner)- 關(guān)注人工智能算法、學(xué)術(shù)論文和程序開發(fā)
機器學(xué)習(xí)、人工智能、數(shù)據(jù)挖掘、深度學(xué)習(xí)等技術(shù)在這些年有了長足的發(fā)展,并深入很多人的心里。對于很多人來說,學(xué)習(xí)這些算法的原理需要一定的精力,并不是一個簡單的事情。而很多人,尤其是對于一些小企業(yè)和個人來說更多的只是能用就行了。知道哪些算法可以做什么,然后找到相應(yīng)的工具實施就可以了。對于需要學(xué)習(xí)算法原理的童鞋來說,有開源工具的幫助,看別人寫的源代碼也會幫助我們加深算法的理解,并獲得實際中試試算法的一些經(jīng)驗。
這篇文章中將會給大家?guī)砗w各種算法和數(shù)據(jù)處理的開源工具,這些工具實現(xiàn)了聚類、分類、回歸、個性化推薦、主題模型、自然語言處理、深度學(xué)習(xí)等各種算法,也包含各個語言的版本,同時歡迎大家評論并添加新的工具。頭條不讓發(fā)鏈接,所以這些工具官網(wǎng)沒有提供,大家可以去:
datalearner/machine_learning_tools 這里訪問,有直接的地址。
Scikit-Learn - Python
Scikit-Learn是一個Python機器學(xué)習(xí)開源工具,它包含分類、回歸、聚類、降維、模型選擇、數(shù)據(jù)預(yù)處理等功能。根據(jù)官網(wǎng)介紹,目前已經(jīng)有很多公司也在使用,包括Spotify、Inria、Evernote等。該工具主要特點如下:
是數(shù)據(jù)挖掘和數(shù)據(jù)分析簡單有效的工具
所有人均可使用,多種場景可復(fù)用
基于NumPy,Scipy和matplotlib構(gòu)造
基于BSD許可——開源、商用均可
TensorFlow - Python
TensorFlow是谷歌開發(fā)的人工智能算法工具。Tensor(張量)意味表示多維的意思,F(xiàn)low(流)表示基于數(shù)據(jù)流圖的計算。TensorFlow是將復(fù)雜的數(shù)據(jù)結(jié)構(gòu)傳輸至人工智能神經(jīng)網(wǎng)中進行分析和處理過程的系統(tǒng)。TensorFlow可被用于語音識別或圖像識別等多項機器深度學(xué)習(xí)領(lǐng)域,是目前深度學(xué)習(xí)最流行的框架之一。
DeepLearning4J - Java
DeepLearning for Java是一個開源的DeepLearning庫,它是用Java和Scala寫的。它是第一個商業(yè)級別的運行在JVM上的DeepLearning版本。它可以運行在Hadoop和Spark上。對于不熟悉Python的人來說,這是入手深度學(xué)習(xí)很好的工具。主要包括的庫有DeepLearning4J、ND4J、DataVec、JavaCPP等。該工具主要特點如下:
支持CPU和GPU上的分布式運行
提供Java/Scala/Python接口
通過循環(huán)的reduce并行訓(xùn)練
基于Hadoop的可擴展工具
支持在AWS上的GPU擴展
Word2Vec - Python
Word2Vec是由Google開源的一個計算詞向量的工具。這并不是一個算法,但是它實現(xiàn)了CBoW模型和Skip-gram模型??梢愿鶕?jù)文本計算出單詞的向量。這些向量在空間中的位置具有一定的含義。
DatumBox - Java
DatumBox是機器學(xué)習(xí)開源框架,是使用Java語言編寫的工具。它可以運用在社交媒體監(jiān)測、搜索引擎優(yōu)化、質(zhì)量評估和文本分析等領(lǐng)域。包括Webseo,Mozaik等公司都在使用。該工具主要特點如下:
提供強大的開源支持
使用Java編寫的機器學(xué)習(xí)框架
包含大量算法、模型、統(tǒng)計檢驗等功能
Knowledge Networks - Java/C
這是一個收集了各種主題模型的庫,包括各種版本的LDA代碼,以及Dirichlet過程(DP)代碼、層次Dirichlet過程模型(HDP)代碼。還有其他的一些主題模型代碼。這個庫還收集了一個NIPS0-12的數(shù)據(jù)集,主要是用來做主題模型的,包括1740個文檔,2037個作者等等。
gensim - Python
gensim是一個基于Python的話題模型工具,是免費的Python庫。它是可擴展的統(tǒng)計語義工具,可以分析文本語義結(jié)構(gòu)并抽取相似語義的文本。很多公司如IBCN、DTU、issuu等都在使用。該工具主要特點如下:
良好的擴展性、魯棒性
獨立于平臺
開源
MALLET - Java
MALLET(MAchine Learning for LanguagE Toolkit)是一個機器學(xué)習(xí)的工具,主要用來做自然語言處理的,也可以用來做文檔的分類、聚類、話題模型、信息抽取以及其它的文本相關(guān)的機器學(xué)習(xí)。這個工具包含很多精細(xì)的算法,比如層次話題模型(hLDA)等。主要功能如下:
文檔分類
序列標(biāo)注
話題模型
NLTK - Python
NLTK是University of Pennsylvania的兩位大神開發(fā)的,主要是做自然語言處理的。對英文的支持非常好,可以做如抽取地名、組織名、詞干提取等等操作。同時這個工具還提供了超過50種的語料,如WordNet等,可以供大家做實驗用。NLTK也支持對中文的處理。
LensKit - Java
Lenskit是美國的明尼蘇達(dá)大學(xué)的GroupLens團隊開發(fā)的開源推薦工具,基于Java編寫,是基于GNU許可的開源軟件。它實現(xiàn)了推薦領(lǐng)域的多種算法,包括基于用戶、項目的協(xié)同過濾算法,矩陣分解方法等。它還提供了多種推薦效果評價工具。這應(yīng)該是推薦領(lǐng)域的人用到的最常用的工具。這個工具覆蓋了很多流行的個性化推薦算法,也提供了相應(yīng)的源代碼。做個性化推薦的同學(xué)既可以使用這個工具,也可以通過這個工具學(xué)習(xí)算法細(xì)節(jié)。
MyMediaLite_Python - Python
MyMediaLite_Python是合肥工業(yè)大學(xué)王錦坤博士開發(fā)的開源推薦工具,基于Python編寫,是MyMediaLite框架的Python版本。目前已經(jīng)引入了WRMF模型等。
Apache Mahout - Java/Scala
Apache Mahout是一個優(yōu)秀的分布式機器學(xué)習(xí)框架,早先隨著Apache Hadoop 1.X推出,它包含了一些很優(yōu)秀的向量運算工具。0.98版本以前是基于Hadoop 1.X的工具,使用Java編寫。隨著Hadoop 2.X的推出,其開始使用Spark作為基礎(chǔ)平臺,提供Scala接口。后面我們也會說到Spark上的機器學(xué)習(xí)工具。如果希望使用Java可以下載0.98版本之前的軟件,該工具的源代碼也非常適合大家樂器學(xué)習(xí)算法,值得研究。其主要特點如下:
提供了簡單的可擴展編程環(huán)境,很容易構(gòu)造具有擴展性的算法
內(nèi)置大量經(jīng)典算法,這些算法基于Scala+Apache Spark、H2O、Apache Flink平臺
提供Samsara,一個向量實驗環(huán)境,語法與R類似
Apache Spark MLlib - Java/Scala/Python
Apache Spark MLlib是Spark平臺上的一個可擴展的機器學(xué)習(xí)包。這也是目前最流行的分布式的機器學(xué)習(xí)庫之一。只要使用Spark等幾乎都會使用這個庫。底層算法是Scala編寫,可以Java調(diào)用,主要是分布式計算框架,運行在Spark平臺之上。其主要特點如下:
簡單易用,可以被Java,Scala,Python和SparkR調(diào)用
性能強悍,擁有高質(zhì)量算法,比MapReduce快100X倍
容易部署,可以運行在Hadoop集群和數(shù)據(jù)之上
Weka - Java
老牌的數(shù)據(jù)挖掘工具,這個軟件是由University of Waikato的人開發(fā)和維護的。它的語言版本是Java,既提供jar包,可以自己調(diào)用,也提供了圖形化界面讓大家使用鼠標(biāo)操作。非常簡單易用。唯一麻煩的是輸入格式是ARFF文件,是他們自己定義的。但是我們也可以使用csv作為輸入,只不過不如ARFF強大。
聯(lián)系客服