人工智能和机器学习领域有哪些有趣的开源项目
人工智能和機(jī)器學(xué)習(xí)領(lǐng)域有哪些有趣的開源項目?
投遞人 itwriter 發(fā)布于 2014-12-02 11:21 評論(0) 有20人閱讀? 原文鏈接? [收藏]? ?
本文簡要介紹了 10 款?? Quora 上網(wǎng)友推薦的 人工智能和機(jī)器學(xué)習(xí)領(lǐng)域方面的開源項目。
GraphLab
GraphLab 是一種新的面向機(jī)器學(xué)習(xí)的并行框架。GraphLab 提供了一個完整的平臺,讓機(jī)構(gòu)可以使用可擴(kuò)展的機(jī)器學(xué)習(xí)系統(tǒng)建立大數(shù)據(jù)以分析產(chǎn)品,該
公司客戶包括 Zillow、Adobe、Zynga、Pandora、Bosch、ExxonMobil 等,它們從別的應(yīng)用程序或者服務(wù)中抓取數(shù)據(jù),通過推薦系統(tǒng)、欺詐監(jiān)測系統(tǒng)、情感
及社交網(wǎng)絡(luò)分析系統(tǒng)等系統(tǒng)模式將大數(shù)據(jù)理念轉(zhuǎn)換為生產(chǎn)環(huán)境下可以使用的預(yù)測應(yīng)用程序。( 詳情)
項目主頁: http://graphlab.org/
Vowpal Wabbit
Vowpal Wabbit (Fast Online Learning)最初是由雅虎研究院建設(shè)的一個機(jī)器學(xué)習(xí)平臺,目前該項目在微軟研究院。它是由 John Langford 啟動并主
導(dǎo)的項目。
項目地址:? http://hunch.net/~vw/
scikits.learn
scikit-learn 是一個開源的、構(gòu)建在 SciPy 之上用于機(jī)器學(xué)習(xí)的 Python 模塊。它包括簡單而高效的工具,可用于數(shù)據(jù)挖掘和數(shù)據(jù)分析,適合于任何
人,可在各種情況下重復(fù)使用、構(gòu)建在 NumPy、SciPy 和 matplotlib 之上,遵循 BSD 協(xié)議。(詳情)
項目地址: http://scikit-learn.org/stable
Theano
Theano 是一個 python 庫,用來定義、優(yōu)化和模擬數(shù)學(xué)表達(dá)式計算,用于高效的解決多維數(shù)組的計算問題。它使得寫深度學(xué)習(xí)模型更加容易,同時也
給出了一些關(guān)于在 GPU 上訓(xùn)練它們的選項。( 詳情)
項目地址: http://deeplearning.net/software/theano/
Mahout
Mahout 是 Apache Software Foundation(ASF) 旗下的一個開源項目,提供一些可擴(kuò)展的機(jī)器學(xué)習(xí)領(lǐng)域經(jīng)典算法的實現(xiàn),旨在幫助開發(fā)人員更加方便
快捷地創(chuàng)建智能應(yīng)用程序。Mahout 包含許多實現(xiàn),包括聚類、分類、推薦過濾、頻繁子項挖掘。此外,通過使用 Apache Hadoop 庫,Mahout 可以有效地
擴(kuò)展到云中。
項目主頁: http://mahout.apache.org/
pybrain
pybrain 是 Python 的一個機(jī)器學(xué)習(xí)模塊,它的目標(biāo)是為機(jī)器學(xué)習(xí)任務(wù)提供靈活、易應(yīng)、強(qiáng)大的機(jī)器學(xué)習(xí)算法。pybrain 包括神經(jīng)網(wǎng)絡(luò)、強(qiáng)化學(xué)習(xí)(及
二者結(jié)合)、無監(jiān)督學(xué)習(xí)、進(jìn)化算法。以神經(jīng)網(wǎng)絡(luò)為核心,所有的訓(xùn)練方法都以神經(jīng)網(wǎng)絡(luò)為一個實例。
項目主頁: http://pybrain.org/
OpenCV
OpenCV 是一個基于(開源)發(fā)行的跨平臺計算機(jī)視覺庫,可以運(yùn)行在 Linux、Windows 和 Mac OS 操作系統(tǒng)上。它輕量級而且高效——由一系列 C 函
數(shù)和少量 C++ 類構(gòu)成,同時提供了 Python、Ruby、MATLAB 等語言的接口,實現(xiàn)了圖像處理和計算機(jī)視覺方面的很多通用算法。( 詳情)
項目主頁: http://opencv.org/
Orange
Orange 是一個基于組件的數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)軟件套裝,它的功能即友好,又很強(qiáng)大,快速而又多功能的可視化編程前端,以便瀏覽數(shù)據(jù)分析和可視
化,基綁定了 Python 以進(jìn)行腳本開發(fā)。它包含了完整的一系列的組件以進(jìn)行數(shù)據(jù)預(yù)處理,并提供了數(shù)據(jù)帳目,過渡,建模,模式評估和勘探的功能。
項目主頁: http://orange.biolab.si/
NLTK
NLTK(natural language toolkit)是 python 的自然語言處理工具包。2001 年推出,至今發(fā)展非常活躍。它的主要作用是為了教學(xué),至今已經(jīng)在 20
多個國家 60 多所高校使用,里面包括了大量的詞料庫,以及自然語言處理方面的算法實現(xiàn):分詞, 詞根計算, 分類, 語義分析等。
項目主頁: http://nltk.org/
Nupic
Nupic 是一個開源的人工智能平臺。該項目由 Grok(原名 Numenta)公司開發(fā),其中包括了公司的算法和軟件架構(gòu)。 NuPIC 的運(yùn)作接近于人腦,“當(dāng)
模式變化的時候,它會忘掉舊模式,記憶新模式”。如人腦一樣,CLA 算法能夠適應(yīng)新的變化。( 詳情)
項目主頁: http://numenta.org/nupic.html
--------------------------------------------------------------------------------
以上是小編整理的 10 款人工智能和機(jī)器學(xué)習(xí)領(lǐng)域的開源項目。更多項目可參看這個列表:http://deeplearning.net/software_links/,或查看
Quora 中更多網(wǎng)友的精彩回答。
?
?
?
???? C++在“商業(yè)應(yīng)用”方面,曾經(jīng)是天下第一的開發(fā)語言,但這一桂冠已經(jīng)被java搶走多年。因為當(dāng)今商業(yè)應(yīng)用程序類型,已經(jīng)從桌面應(yīng)用迅速轉(zhuǎn)移成
Web應(yīng)用。當(dāng)Java橫行天下之后,MS又突然發(fā)力,搞出C#語言,有大片的曾經(jīng)的C++程序員,以為C++要就此沉淪,未料,這三年來,C++的生命力突然被嚴(yán)重
地增強(qiáng)了。主力原因就是開源的軟件、基礎(chǔ)軟件(比如并發(fā)原生支持,比如Android必定要推出原生的SDK)、各種跨平臺應(yīng)用的出現(xiàn)。
??????? 開源C++庫必須具有以下特點(diǎn):必須是成熟的產(chǎn)品、跨平臺的產(chǎn)品、相對通用的庫。
?
??????? 一、通用標(biāo)準(zhǔn)類
??????? STL:C++標(biāo)準(zhǔn)模板庫,也是開源的。
??????? boost:C++準(zhǔn)標(biāo)準(zhǔn)庫,它是強(qiáng)大地,江湖稱之“千錘百煉”。
??????? -------若掌握,必橫行世界。
??????
??????? deelx (輕量級的正則表達(dá)式解析類庫,國產(chǎn)),boost里有強(qiáng)大的正則表達(dá)式解析庫,但如果你只想要一個表達(dá)式解析,不想要拖上龐大的boost
庫時……支持一下國貨。
??????? iconv /iconvpp : (C形式的編碼轉(zhuǎn)換函數(shù)庫,
?
???????? 二、XML解析庫
???????? C++的XML相關(guān)庫不少,但是大部分其實都是C庫,使用起來自然不那么輕便。其中基于DOM的有TinyXml,基于SAX的當(dāng)然是Xerces。前者小巧快捷
,便于使用,適合做數(shù)據(jù)交換。后者則是全功能的XML解析器。
??????? xerces-c :最強(qiáng)大的XML解析庫了,不是僅僅在開源庫里,你盡管把商業(yè)的算在內(nèi)。當(dāng)然,它的變體,被IBM拿去賣錢的那個版本,多了數(shù)百兆的
東東來支持各國編碼轉(zhuǎn)換,是更強(qiáng)大,但我覺得有小小的,開源的iconv在前不就夠了?
??????? 對三個輕型xml解析開源庫:SlimXml、TinyXml、RapidXml,對比如下:
??????? 解析這個3.3萬行,1.5M大小的xml,三個庫分別花了
????? · SlimXml: 22ms
????? · TinyXml: 54ms
????? · RapidXml: 4ms!
??????? 結(jié)論是,RapidXml果然很強(qiáng)悍,居然比SlimXml快5倍多。
??????? 比較欣慰的是,在沒有很關(guān)注效率的情況下,SlimXml仍然比TinyXml快 2.5倍。SlimXml走的是簡單小巧路線,源代碼只有 32k,而TinyXml和
RapidXml的源碼分別是147k和141k,有這樣的效率可以滿意了。因為這個庫主要還是針對幾十上百行的小文件,解析特別大的xml不在我考慮的范圍之內(nèi)。
???????? 還有irrlicht(鬼火引擎)的irrXMl解析器。
???????? xsd (XML 與 C++數(shù)據(jù)結(jié)構(gòu)的綁定工具)。
?
???????? 三、數(shù)據(jù)庫
??????? 我比較喜歡OTL(用于連接數(shù)據(jù)庫)。其他的沒用過
?
??????? 四、多媒體類
??????? SDL (Simple DirectMedia Layer/多媒體直接訪問層,用于游戲編程)。
?????? 相應(yīng)的c開源庫有ffmpeg、mpeg4、aac、avc、libmad、mpeg1、flac、ac3、ac3、matroska著名的多媒體播放器 TCPMP 天下聞名的跨平臺、嵌入式
手持設(shè)備視頻播放器,
?
???????? 五、網(wǎng)絡(luò)開發(fā)類
???????? 1、gSOAP SOAP協(xié)議的C++支持庫及代碼生成工具。
?
???????? 2、ACE? 網(wǎng)絡(luò)編程研究首選。
??????? ACE適合于研究,大型網(wǎng)絡(luò)編程上效率不足,大型網(wǎng)游里面幾乎沒有用到ACE的,很多用了ACE的項目也被證明了效率不高。
?????? 除了ACE之外,還有很多系統(tǒng)和網(wǎng)絡(luò)編程方面的程序庫。比如在線程庫方面,還有ZThread、boost::thread,如果放大到C/C++ 領(lǐng)域, 還有APR,還
有CII。在文件和目錄操作方面,boost也有相應(yīng)的組件,而在網(wǎng)絡(luò)編程方面有socket++,還有boost::asio,未來的C++0X中幾乎肯定有一個網(wǎng)絡(luò)編程和一個
線程庫。然而目前看來,ACE仍然是進(jìn)行系統(tǒng)和高性能網(wǎng)絡(luò)編程的首選,其地位在一段時間內(nèi)不會被撼動。它不但是 一個實用的程序庫、框架集,還是一個
典范的設(shè)計模式應(yīng)用范例,非常值得學(xué)習(xí)。
???????? 3、開源C++庫,稱為POCO(POrtable COmponents – 可移植元件),非常方便好用。
??????? 特性:
?????? * 線程,程序同步及多線程編程高級抽象
?????? * 流及文件系統(tǒng)訪問
?????? * 共享庫將類加載
?????? * 功能強(qiáng)大的日志和錯誤報告
?????? * 安全及加密
?????? * 網(wǎng)絡(luò)編程 (TCP/IP 套接字, HTTP客戶端和HTTP服務(wù)器, FTP, SMTP, POP3, 等)
?????? * XML解析 (SAX2 和 DOM) 及生成
?????? * 配置文件及選項處理
?????? * SQL數(shù)據(jù)庫訪問(ODBC, MySQL, SQLite)
?????? 可以運(yùn)行的平臺包括:
??????? * Windows
?????? * Mac OS X
?????? * iPhone OS
?????? * (embedded) Linux
?????? * HP-UX
?????? * Tru64
?????? * Solaris
?????? * QNX
?
??????? 六、GUI庫
??????? BCG Windows平臺下界面設(shè)計的第三方庫,可以讓你的界面更美好,更具時 代感。
?????? wxWidgets :使用wxWidgets ,開發(fā)者可以基于同一套代碼,為Win32, Mac OS X, GTK+, X11, Motif, WinCE等平臺開發(fā)應(yīng)用程序。wxWidgets庫可
以被C++, Python, Perl, and C#/.NET等開發(fā)語言使用。跟其它有些同樣支持跨平臺GUI開發(fā)工具不同,基于wxWidgets的應(yīng)用,擁有真實本地化的視覺及使
用效果——因 為,wxWidgets使用(各)平臺原生的控件,而不是簡單通過貼圖去模擬。wxWidgets是使用廣泛的,自由的,開源的,成熟的。
??????? QT-------------界面(GUI)開發(fā),支持C++/Java/Python/...多種語言。跨平臺。最主要的好處是,API非常優(yōu) 美!Qt本身也不僅僅只是做GUI編
程,實際它基本上可以做OS-API可以做的任何事情。象網(wǎng)絡(luò)/數(shù)據(jù)庫/OpenGL/...都提供完美的支持。
??????? 傳統(tǒng)上Qt被認(rèn)為是可移植的GUI庫,但實際上Qt現(xiàn)在已經(jīng)是一個比較完整的可移植應(yīng)用程序框架了,其中包含了大量的工具,比如正則表達(dá)式、
Web和 Socket類、2D和3D圖形、XML解析、SQL類等,甚至還包括了一個完整的容器類庫,不過其王牌還是GUI。在目前的跨平臺GUI框架中,Qt成 熟度最高
,已經(jīng)被一些大公司應(yīng)用在關(guān)鍵產(chǎn)品中。由于Trolltech對Qt采用的dual license模式,該產(chǎn)品既可以從開源社區(qū)獲得支持,又能夠賺取足夠的商業(yè)利潤,
因此其前景也令人比較有信心。
??????? Qt的主要技術(shù)特色是其元對象模型。Qt實際上使用的并不是標(biāo)準(zhǔn)的C++,而是標(biāo)準(zhǔn)C++的一個擴(kuò)展。它通過元對象模型擴(kuò)展,實現(xiàn)了著名的
signal/slot機(jī)制,而這一機(jī)制也成為Qt的最大特色和優(yōu)勢。
??????? 與Qt類似的可移植GUI框架還有wxWidget、FOX等
?
??????? 六. 計算機(jī)視覺
OpenCV,因特爾自主的開源庫。支持C/C++/Python接口。這個感興趣的朋友可以玩一下。如果結(jié)合OpenCV,你可以做一些外行人覺得很酷的程序。比如
說用它的人臉識別函數(shù),來對你的攝像頭進(jìn)行處理,判斷人的動作等。
?
??????? 七. 圖形圖像處理
GDAL,處理大圖像。要是GIS專業(yè)的人肯定會語言到非常大的tif影像,動則幾個GB的航空影像。GDAL對大圖像的讀寫支持是非常棒的(像多波段的圖像都可
以搞定)。支持C++/Java/Python...
??????? 國外開源的GIS軟件QGIS就是用了gdal
??????? c的圖形圖像庫較多,libjpeg、libpng、zlib、tiff、JBIG、最著名的開源形圖像處理軟件Cximage
?
?????? 八、內(nèi)存管理:boost::smart_ptr,Hans-Boehm GC
?????? C/C++的內(nèi)存管理是一個永恒的話題。一般來說,C++的開發(fā)者傾向于自己管理內(nèi)存。然而,出乎很多C++開發(fā)者意料的是,近期C++的一些領(lǐng)袖人物
已 經(jīng)公開宣稱,如果不配備自動內(nèi)存管理機(jī)制,用C++編寫安全可靠的大型程序是非常困難的。???? 而Bjarne Stroustrup也曾對中國開發(fā)者建議,如果沒
有特別的理由,應(yīng)該在大型項目中使用自動內(nèi)存管理工具。因此,今天的C++開發(fā)者應(yīng)當(dāng)積極地學(xué)習(xí)和應(yīng)用 自動內(nèi)存管理設(shè)施。
??????? 說到自動內(nèi)存管理,比較輕量級的做法是boost::smart_ptr,而激進(jìn)的做法是引入完整的GC機(jī)制。目前開源而又比較可靠的GC中,Hans- Boehm GC
無疑是最受信賴的。作為一個保守的GC,Hans-Boehm GC在性能和功能方面都算是卓越。特別是,使用這個GC,你仍然可以delete、free來自己管理內(nèi)存,
對于我們編程習(xí)慣的沖擊比較小。
?
?????? 九、密碼及安全:OpenSSL
??????? 安全是今天進(jìn)行C/C++編程無法回避和必須重視的問題。然而編寫安全的應(yīng)用程序,特別是跟網(wǎng)絡(luò)相關(guān)的C/C++應(yīng)用程序,是一件十分困難的事情。
特別是涉及到大量的安全、密碼學(xué)相關(guān)的算法、規(guī)范,如果讓開發(fā)者自己摸索,其工作量和難度達(dá)到了不現(xiàn)實的程度。因此必須借助可靠的相關(guān)程序庫才有
可能提高程序的安全性。借助第三方安全保護(hù)平臺,給程序做加密保護(hù)。在安全庫這方面,OpenSSL是目前最好的選擇,其內(nèi)容之全面可靠,已經(jīng)成為業(yè)界
標(biāo)桿。在應(yīng)用程序加密保護(hù)這塊,愛加密是非常專業(yè)的。然而,由于安全編程固有的復(fù)雜性,即使使用penSSL,開發(fā)工作仍然是非常繁瑣的。因此我們也希
望能夠盡快看到更簡單、更易用的C/C++安全程序庫。
?
??????? 十、矩陣計算:MTL
??????? 自1995年以來,C++在科學(xué)計算領(lǐng)域當(dāng)中取得了巨大的突破。這主要?dú)w功于template技術(shù)的高級應(yīng)用,使得C++在科學(xué)計算的性能方面取得了巨大
的進(jìn)步,一大批優(yōu)秀的C++科學(xué)計算庫涌現(xiàn)出來。比如Blitz++、POOMA、MTL、Boost::uBLAS。而這其中,MTL就功能豐富程度、 性能、開發(fā)支持和成熟程度
來講,是比較突出的一個,因此可以優(yōu)先考慮。值得一提的是,2002年,MTL與后來被Intel收購的KAI C++配合,曾經(jīng)在性能評測中擊敗了FORTRAN。
???????? 十一、中間件
???????? 1、分布式對象中間件:ICE
??????? ICE是分布式對象中間件領(lǐng)域里的后起之秀,可以大致地將其視為“改進(jìn)版”的CORBA。目前應(yīng)用在一些大型項目當(dāng)中,其中包括波音公司主持的下
一代陸軍作戰(zhàn)系統(tǒng)。
??????? ICE的一個特別價值是其代碼的范例意義。由于ICE的出現(xiàn)較晚,開發(fā)者比較系統(tǒng)地應(yīng)用了新的C++編程風(fēng)格,所以成為了研讀C++代碼的良好目標(biāo)。
???????? 2、消息中間件:ZeroMQ,總結(jié)的幾種特性如下:
??????? 1) 消息系統(tǒng)中,它差不多是最簡潔的,只是個簡潔的API,有n多種語言的綁定,沒有專門的服務(wù)器;
??????? 2) 性能非常優(yōu)越,遠(yuǎn)遠(yuǎn)高于RabbitMQ、ActiveMQ、MSMQ等;
??????? 3) 適合做分布式和并發(fā)應(yīng)用。
??????? 十二、正則表達(dá)式:boost::regex
??????? 正則表達(dá)式是編程工作中最強(qiáng)有力的工具之一。C++的正則表達(dá)式支持一直以來是一個軟肋。大約在2001年左右,boost中出現(xiàn)了regex庫,初步解
決了這個問題。但是最初的regex無論在效率上還是可靠性方面都有一些問題,后來經(jīng)過一次大規(guī)模的翻修之后,達(dá)到了比較完善的程度。其他可以選擇的
替代品還有C語言的pcre庫,Qt中的QRegExp類等。
?
??????? 十三、配置管理:Lua
??????? 隨著軟件系統(tǒng)越來越復(fù)雜,對軟件的可配置型提出了越來越高的要求。傳統(tǒng)上只要通過命令行參數(shù)來配置的系統(tǒng),現(xiàn)在可能需要越來越多的方式和
機(jī)制。目前越來越 受歡迎、并且得到越來越多證實的做法,是將Lua嵌入到C/C++程序中,而用Lua程序作為配置腳本。這種做法的優(yōu)勢是,Lua語言強(qiáng)大靈
活,可以適應(yīng) 復(fù)雜的配置要求。同時,Lua便于嵌入C/C++程序,而且編譯執(zhí)行速度非常快,可以說是目前解決C/C++程序配置管理問題的一個出色方案。
?
???????? 十四、3D游戲引擎:
????????? 1. Irrlicht http://irrlicht.sourceforge.net/
?????? 始于2003,次年即被評為最佳開源游戲引擎。官方支持C++和.Net,拓展語言綁定包含java,perl,ruby,python.跨平臺支持,使用D3D,OpenGL以及自
帶API.
?????? 優(yōu)點(diǎn):容易上手;跨平臺;自帶XML解析器;大的社區(qū);
?????? 缺點(diǎn):最近開發(fā)慢下來了
?
??????? 2. Panda3D http://www.panda3d.org/
?????? 由迪斯尼開發(fā),卡耐基-梅隆娛娛樂科技中心支持。Python是官方推薦語言。也支持C++。
?????? 優(yōu)點(diǎn):有用的社區(qū);大量功能;定期開發(fā);
?????? 缺點(diǎn):缺乏工具支持;極差的文檔;
?
??????? 3. OGRE http://www.ogre3d.org/
?????? 圖像引擎中最好的一個。2000年立的項。推薦使用C++語言。需要非常熟悉編程才行。初學(xué)者不宜。
?????? 優(yōu)點(diǎn):大量功能;優(yōu)異的文檔;大規(guī)模的社區(qū);活躍的開發(fā)
?????? 缺點(diǎn):不適合初哥;只有圖像引擎
?
??????? 4. Crystal Space http://www.crystalspace3d.org/main/Main_Page
?????? 1997年發(fā)行,用C++編寫的開源游戲引擎。推薦使用C++
??????? 優(yōu)點(diǎn):不錯的社區(qū)支持;大量功能;
??????? 缺點(diǎn):難學(xué);
?
??????? 5、Delta3d? ?http://www.delta3d.org/index.php
???????? Delta3D是一款由美國海軍研究學(xué)院(Naval Postgraduate School)開發(fā)的全功能游戲與仿真引擎,得到美國軍方巨大的支持與豐厚的投資。該引
擎應(yīng)用領(lǐng)域極為廣泛,如開發(fā)在培訓(xùn)、教育、娛樂行業(yè)和科學(xué)計算可視化領(lǐng)域等方面建模與仿真的軟件。
??????? 它的標(biāo)準(zhǔn)化設(shè)計把一些知名開源軟件和引擎???????? 如 Open Scene Graph(OSG), OpenDynamicsEngine (ODE), Character Animation Library
(CAL3D), 還有 OpenAL融為一體。Delta3D通過對這些底層模塊進(jìn)行隱藏封裝,整合在一起從而形成了一個使用更加方便的高級API 函數(shù)庫,使得開發(fā)者在
必要的時候能夠使用底層函數(shù)進(jìn)行二次開發(fā)。Delta3D在軟件系列中,處于中間層(Middle layer)的位置上。
??????? 優(yōu)點(diǎn):適合各種3D游戲,仿真,很全面。一直在做更新。
??????? 缺點(diǎn):參考資料比較少。中文文檔也比較少。官方參考資料比較少。但是讀源代碼可以加快理解,應(yīng)用。
?
轉(zhuǎn)載于:https://www.cnblogs.com/spinsoft/p/4137749.html
總結(jié)
以上是生活随笔為你收集整理的人工智能和机器学习领域有哪些有趣的开源项目的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做梦梦到在一个商场里,在电影院还有玩的地
- 下一篇: 72伏电瓶车控制器要多少钱?急急急