Orange 是一個基于組件的數(shù)據(jù)挖掘和機器學(xué)習(xí)軟件套裝,它的功能即友好,又很強大,快速而又多功能的可視化編程前端,以便瀏覽數(shù)據(jù)分析和可視化,基綁定了Python以進行腳本開發(fā)。它包含了完整的一系列的組件以進行數(shù)據(jù)預(yù)處理,并提供了數(shù)據(jù)帳目,過渡,建模,模式評估和勘探的功能。其由C++ 和 Python開發(fā),它的圖形庫是由跨平臺的Qt框架開發(fā)。
數(shù)據(jù)是怎么導(dǎo) 入Orange里的:
具體操作是用python嗎
你數(shù)據(jù)是存在哪兒的,如果是存在mysql里面的,那可以 使用orngMySQL和orngSQL模塊,如下所示 t=orngMySQL.Connect('localhost','root','','test') data=t.query("SELECT * FROM busclass") tree=orngTree.TreeLearner(data) orngTree.printTxt(tree,nodeStr="%V (%1.0N)",leafStr="%V (%1.0N)")
Orange怎么用?
Orange是類似KNIME和Weka KnowledgeFlow的數(shù)據(jù)挖掘工具,它的圖形環(huán)境稱為Orange畫布(OrangeCanvas),用戶可以在畫布上放置分析控件(widget),然后把控件連接起來即可組成挖掘流程。這里的控件和KNIME中的節(jié)點是類似的概念。每個控件執(zhí)行特定的功能,但與KNIME中的節(jié)點不同,KNIME節(jié)點的輸入輸出分為兩種類型(模型和數(shù)據(jù)),而Orange的控件間可以傳遞多種不同的信號,比如learners, classifiers, evaluation results, distance matrices, dendrograms等等。Orange的控件不象KNIME的節(jié)點分得那么細,也就是說要完成同樣的分析挖掘任務(wù),在Orange里使用的控件數(shù)量可以比KNIME中的節(jié)點數(shù)少一些。
Orange的好處是使用更簡單一些,但缺點是控制能力要比KNIME弱。
除了界面友好易于使用的優(yōu)點,Orange的強項在于提供了大量可視化方法,可以對數(shù)據(jù)和模型進行多種圖形化展示,并能智能搜索合適的可視化形式,支持對數(shù)據(jù)的交互式探索。
Orange的弱項在于傳統(tǒng)統(tǒng)計分析能力不強,不支持統(tǒng)計檢驗,報表能力也有限。Orange的底層核心也是采用C++編寫,同時允許用戶使用Python腳本語言來進行擴展開發(fā)。
支持Python的Orange數(shù)據(jù)挖掘軟件實例:
Orange的特點是界面友好易于使用,提供大量可視化方法,提供Python編程接口,于是決定試用一下。
網(wǎng)上可以搜索到的Orange中文資料不多,這篇《利用orange進行關(guān)聯(lián)規(guī)則挖掘》 給了一個通過Python調(diào)用Orange中的Apriori算法進行關(guān)聯(lián)分析的例子,更詳細的通過Python調(diào)用Orange的文檔參考官網(wǎng)上的Beginning with Orange.圖形界面的使用沒看到文檔,不過界面簡單易懂,看看features里的screenshots也可猜個大概。參考Beginning with Orange中的Classification小節(jié),以用Naive Bayesian Classifer處理Orange自帶的示例數(shù)據(jù)集voting.tab為例,對代碼做了少量修改:
#-*- encoding: utf-8 -*- # 導(dǎo)入orange包 import orange # 導(dǎo)入測試數(shù)據(jù)voting.tab data = orange.ExampleTable("voting") # 使用Naive Bayesian Classifer classifier = orange.BayesLearner(data) # 輸出 all_data = len(data) bingo = 0 for d in data: # 分類器輸出的類別 cc = classifier(d) # 原文件中數(shù)據(jù)中的類別 oc = d.getclass() if oc == cc: print 'bingo!', bingo += 1 else: print 'oh,no!', print "original", oc, "classified as", cc # 輸出Classification Accuracy print "CA: %.4f" % (float(bingo)/all_data)
運行上面的代碼,可得到如下輸出:
bingo! original republican classified as republican
……
bingo! original republican classified as republican
bingo! original republican classified as republican
CA: 0.9034
分類準確率CA為0.9034.
Python調(diào)用非常容易,只用了十幾行代碼,不過如果用圖形界面,這個簡單的分類只需要選擇Data->File,Classify->Naive Bayes和Evaluate->Test Learners就行了,如下圖所示,在File窗口中選擇Data File為voting.tab,通過簡單的拖拉將widget連起來即可,雙擊Test Learners可以看到CA為0.9011.
對比Python代碼的輸出和圖形界面的結(jié)果,會發(fā)現(xiàn)兩個結(jié)果不一致,原因是圖形界面中使用的是5重交叉驗證,而代碼中使用的訓(xùn)練數(shù)據(jù),如果選擇”Test on train data”,兩者就一致了。