📄 dunncore.cs
字号:
using System;
using System.Collections;
namespace ClusterLibrary
{
/// <summary>
///
/// </summary>
public class GDICore
{
public GDICore()
{
//
// TODO: Add constructor logic here
//
}
public static double ValidityIndex ( Set x, int i, int j ){
ArrayList interList = new ArrayList();
ArrayList intraList = new ArrayList();
double interDis = 0.0;
double intraDis = 0.0;
// Intercluster Distances
foreach ( Cluster xi in x ){
foreach ( Cluster xj in x ){
if ( xi.Equals( xj ) )
continue;
switch ( i ){
case 1:
interDis = Utilities.inter1( xi, xj );
break;
case 2:
interDis = Utilities.inter2( xi, xj );
break;
case 3:
interDis = Utilities.inter3( xi, xj );
break;
case 4:
interDis = Utilities.inter4( xi, xj );
break;
case 5:
interDis = Utilities.inter5( xi, xj );
break;
case 6:
interDis = Utilities.inter6( xi, xj );
break;
}
interList.Add( interDis );
}
}
// Intracluster Distances
foreach ( Cluster xk in x ){
switch ( j ) {
case 1:
intraDis = Utilities.intra1( xk );
break;
case 2:
intraDis = Utilities.intra2( xk );
break;
case 3:
intraDis = Utilities.intra3( xk );
break;
}
intraList.Add( intraDis );
}
return Utilities.Min ( interList ) / Utilities.Max ( intraList ) ;
}
public static ArrayList ValidityIndex ( Set x ){
ArrayList result = new ArrayList();
ArrayList interList = new ArrayList();
ArrayList intraList = new ArrayList();
double interDis = 0.0;
double intraDis = 0.0;
for (int i = 0; i <= 17; i ++ ){
// Intercluster Distances
foreach ( Cluster xi in x ){
foreach ( Cluster xj in x ){
if ( xi.Equals(xj) )
continue;
switch ( i % 6 ) {
case 0:
interDis = Utilities.inter1( xi, xj );
break;
case 1:
interDis = Utilities.inter2( xi, xj );
break;
case 2:
interDis = Utilities.inter3( xi, xj );
break;
case 3:
interDis = Utilities.inter4( xi, xj );
break;
case 4:
interDis = Utilities.inter5( xi, xj );
break;
case 5:
interDis = Utilities.inter6( xi, xj );
break;
}
interList.Add( interDis );
}
}
// Intracluster Distances
foreach ( Cluster xk in x ){
switch ( i / 6 ) {
case 0:
intraDis = Utilities.intra1( xk );
break;
case 1:
intraDis = Utilities.intra2( xk );
break;
case 2:
intraDis = Utilities.intra3( xk );
break;
}
intraList.Add( intraDis );
}
result.Add ( Utilities.Min ( interList ) / Utilities.Max ( intraList ) );
interList.Clear();
intraList.Clear();
}
return result;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -