Weka和Mulan的介紹和理解

2021-07-15 10:59:34 字數 2077 閱讀 1797

weka:

weka的分類器,都放在以weka.classifiers為開頭的包裡。並根據其功能進行分門別類,具體見其方法。weka裡的核心類,放在了weka.core為開頭的包裡。

對於weka的資料,存在了instances裡。然後每一條資料,則是介面instrance的例項(有s和沒有s的區分,很好理解)。該介面有一些不一樣的實現,可以根據實際情況使用。通常使用arff檔案,按照一定的格式進行使用,官網都有例子,這裡不贅述。使用enumerateattributes()對資料集的特徵進行迭代,也可以使用enumerateinstances()對資料集的每一條資料集進行迭代。函式remove可以刪掉某乙個特徵,函式renameattribute對特徵重新命名。

對於每一條資料instance,都有其特徵,用類attribute表示(特別的,對於該資料的instances,特徵也是一樣的)。例項裡的特徵集合,用arraylist進行表示,這樣就擁有順序,也就是有個自己的序號。對於資料特徵的獲取,可以通過其名字,也可以通過其序號進行選取。(從另乙個側面說,在weka裡,特徵名是唯一的)。取出特徵,我們也可以得到該特徵的資料集合。特徵有numeric,nominal,string,date,relational,5種型別。一般用得最多的是第一種numeric,也就是數值;對於文字處理,用的是string型別。

weka裡提供了乙個強大的工具,叫做filter。我們可以利用這個工具,對資料集進行篩選和處理。分別是有監督和無監督兩類,篩選方法包括對特徵進行篩選或者對例項進行篩選,總共4種,根據自己所需進行使用。使用方法一般如下:

***filter filter = new ***filter();

filter.seta(some);

filter.setb(some2);

instances newdata = filter.usefilter(olddata,filter);

這樣資料就按照我們要的進行整理了。

weka和sklearn一樣,都提供了一些諸如切割訓練集和測試集的方法。

mulan:

mulan是依託著weka所做的乙個多標籤分類的類庫。和weka一樣,其做法是,把標籤也看成是乙個特徵,其類別是weka裡面的nominal型別,也就是乙個字串的集合(如:@attribute class   )。但是有所區別的是,weka的標籤可以是好多類別,類別的也可以不同命名。而mulan的標籤只能是0和1(如:@attribute label )。輸入格式有兩種arff和xml,具體也是見官網。

mulan的核心類,主要是放在了mulan.data裡。和weka一樣,資料集使用類instances表示,在mulan裡,叫做multilabelinstances。getdataset()獲取資料裡除了標籤以外的其他資料(也就是特徵所對應的資料),返回乙個weka的instances例項。getfeatureattributes() 獲取其資料的標籤集合。

相比於weka,mulan多了乙個叫做label的東西,在介面labelsmetadata裡宣告了,mulan把標籤和特徵區分對待(儘管二者也是不能重名)。

mulan是乙個多標籤的分類庫,也就是分類,其演算法,主要是集中在mulan.classifier.*這裡。在mulan.classifier這個包裡,有幾個東西值得看一看。multilabeloutput類,是訓練後的學習器,對每一條例項進行分類,然後得到的結果,包括了幾個點:標籤的二分(也就是打不打該標籤),標籤的評分,標籤的排序。獲取到這些,我們就可以自己構建乙個結果。類multilabellearnerbase是介面multilabellearner的實現。使用方法,很簡單

***classifier learner = new ***classifier();

learner.build(mltrain);

for (int instanceindex = 0; instanceindex < numinstances; instanceindex++)

multilabeloutput output = learner.makeprediction(labelsmissing);

}

利用學習器的方法,makeprediction,可以對每一條資料進行多標籤分類,從而達到我們要的效果。

Weka和mahout的區別

mahout 1.可大規模分布式計算 2.目標物件是程式開發人員 3.與hadoop和lucene有很好的介面 4.是圍繞著可擴充套件的演算法和介面特殊設計的 5.命令列和api 6.apache license weka 1.記憶體消耗厲害 2.目標物件是資料探勘分析人員 3.有大量的演算法集 4...

NestedScrollView使用和理解

nestedscrollview即支援巢狀滑動的 scrollview。因此,我們可以簡單的把nestedscrollview模擬為 scrollview,其作用就是作為控制項父布局,從而具備 巢狀 滑動功能。nestedscrollview與 scrollview 的區別就在於nestedscro...

cookie和session的個人簡單理解

瀏覽器 客戶端發起請求 伺服器響應 setcookie要求瀏覽器 客戶端生成乙個cookie 瀏覽器 客戶端儲存cookie,並在下次請求中在請求頭中傳送這個cookie 伺服器識別這個瀏覽器發來的cookie,證明是同一使用者 這個使用者請求相同的伺服器都會傳送這一cookie重複3 5步,伺服器...