2014-01-07 46 views
0

我有4個羣集(0,1,2,3)和來自某個類別(類別0,類別1,類別2)的許多數據。數據如下所示。將類名稱給一個羣集

(cluster, class) number of data 

(0,0)      1 
(0,1)     2 
(0,2)     2 
(1,0)     0 
(1,1)     0 
(1,2)     0 
(2,0)     0 
(2,1)     0 
(2,2)     1 
(3,0)     4 
(3,1)     3 
(3,2)     0 

我想給每個集羣的類名稱。

這個想法是,某個集羣的名稱將是最頻繁出現某個類的數據數量的類的名稱。

我想給集羣命名,因此名稱如下所示。

任何人都可以幫助如何解決這個問題在VB.NET?謝謝

cluster class 
0   1 
1 
2   2 
3   0 

回答

1

你可以做的是建立一個「自定義的數組對象」是這樣的:

Public Class DataArray(Of T) 

    Public Sub New(rowCount As Integer, columnCount As Integer) 
     If (rowCount < 0) Then 
      Throw New ArgumentOutOfRangeException("rowCount") 
     ElseIf (columnCount < 0) Then 
      Throw New ArgumentOutOfRangeException("columnCount") 
     End If 
     Me.array = New T((rowCount - 1), (columnCount - 1)) {} 
     Me.names = New String(rowCount - 1) {} 
     Me.rowCount = rowCount 
     Me.columnCount = columnCount 
    End Sub 

    Default Public Property Item(rowIndex As Integer, columnIndex As Integer) As T 
     Get 
      Return Me.array(rowIndex, columnIndex) 
     End Get 
     Set(value As T) 
      Me.array(rowIndex, columnIndex) = value 
     End Set 
    End Property 

    Public Property Cluster(rowIndex As Integer) As String 
     Get 
      Dim s As String = Me.names(rowIndex) 
      Return If((s Is Nothing), String.Empty, s) 
     End Get 
     Set(value As String) 
      Me.names(rowIndex) = If((value Is Nothing), String.Empty, value) 
     End Set 
    End Property 

    Public Sub [Set](rowIndex As Integer, values As T(), name As String) 
     For i As Integer = 0 To (values.Length - 1) 
      Me.array(rowIndex, i) = values(i) 
     Next 
     Me.names(rowIndex) = name 
    End Sub 

    Private ReadOnly array As T(,) 
    Private ReadOnly names As String() 
    Private ReadOnly rowCount As Integer 
    Private ReadOnly columnCount As Integer 

End Class 

所以,現在,如果我創建的4行(0,1,2,3)三列數據的(0,1,2)數組類型Integer

Dim data As New DataArray(Of Integer)(4, 3) 

並填充一些數據:

data.[Set](0, {0, 1, 2}, "Cluster 0") 
data.[Set](1, {0, 0, 0}, "Cluster 1") 
data.[Set](2, {0, 0, 1}, "Cluster 2") 
data.[Set](3, {4, 3, 0}, "Cluster 3") 

我也可以像你這樣設置的值:

data(0, 0) = 1 
data(0, 1) = 2 
data(0, 2) = 2 
data(1, 0) = 0 
data(1, 1) = 0 
data(1, 2) = 0 
data(2, 0) = 0 
data(2, 1) = 0 
data(2, 2) = 1 
data(3, 0) = 4 
data(3, 1) = 3 
data(3, 2) = 0 

並命名每個集羣:

data.Cluster(0) = "Cluster 0" 
data.Cluster(1) = "Cluster 1" 
data.Cluster(2) = "Cluster 2" 
data.Cluster(3) = "Cluster 3" 
相關問題