2016-03-07 67 views
1

我試圖用Accord.NET框架(MultilabelSupportVectorMachine類),以多標籤支持向量機,但基於示例這是很難理解的編碼如:多標籤支持向量機在Accord.NET

// Sample input data 
double[][] inputs = 
{ 
    new double[] { 0 }, 
    new double[] { 3 }, 
    new double[] { 1 }, 
    new double[] { 2 }, 
}; 

// Outputs for each of the inputs 
int[][] outputs = 
{ 
    new[] { -1, 1, -1 }, 
    new[] { -1, -1, 1 }, 
    new[] { 1, 1, -1 }, 
    new[] { -1, -1, -1 }, 
}; 

如果我的輸出是一個包含不在-1和+1範圍內的整數值的矩陣,我們應該使用什麼編碼將數據轉換爲這種格式?

回答

1

這是MultiLabelSupportVectorMachine將返回的輸出格式,如果您使用它計算某些內容。 MultiClassSupportVectorMachine返回一個int值,因爲當您確定一個示例僅匹配一個類時使用它,而MultiLabelSupportVectorMachine返回一個數組,該數組顯示示例匹配更多類時示例匹配的哪些類。

它的工作原理是這樣的: 輸出數組的長度在0(含)和類數之間。所以,如果你有4個班,你就會有一個輸出數組是這樣的:

{ -1, -1, 1, -1 } 

這意味着輸出類是2,因爲1指數是2 我希望現在你知道如何輸出這個類的工作原理,這給你指示如何格式化你的示例輸出。

附加信息:如果你想使用MultiLabelSupportVectorMachine,但你只想得到一個輸出類,你可以在輸出數組中取第一個索引1。我只有在確定One-Vs-All比One-Vs-One更好地服務於你時,我才推薦這一點。

+0

API已更新,以使此用法(用於多類問題的多標籤SVM)更簡單。如果您仍然需要,請查看多標籤SVM文檔頁面的示例部分:http://accord-framework.net/docs/html/T_Accord_MachineLearning_VectorMachines_MultilabelSupportVectorMachine.htm – Cesar