2014-01-07 43 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" 
相关问题