本文整理汇总了C#中Cluster.SetDatas方法的典型用法代码示例。如果您正苦于以下问题:C# Cluster.SetDatas方法的具体用法?C# Cluster.SetDatas怎么用?C# Cluster.SetDatas使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Cluster
的用法示例。
在下文中一共展示了Cluster.SetDatas方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: WardMethod_DoWork
void WardMethod_DoWork(object sender, System.ComponentModel.DoWorkEventArgs e)
{
clusterList.Clear();
Normalize();
foreach (var item in inputDataList)
{
Cluster c = new Cluster();
c.Datas.Add(item);
c.Layer = 0;
clusterList.Add(c);
}
int layer = 1;
while (clusterList.Count > 1)
{
List<Pair> pairList = new List<Pair>();
int i = 1;
foreach (var item in clusterList.Take(clusterList.Count() - 1))
{
foreach (var item2 in clusterList.Skip(i))
{
var pair = new Pair()
{
ClusterA = item2,
ClusterB = item
};
pairList.Add(pair);
}
i++;
}
System.Threading.Tasks.Parallel.ForEach(pairList, (n) =>
{
n.Value = n.ClusterA.GetWardValue(n.ClusterB);
});
var min = pairList.Min(n => n.Value);
List<List<Cluster>> cList = new List<List<Cluster>>();
foreach (var item in pairList.Where(n => n.Value == min))
{
bool flag = true;
foreach (var item2 in cList)
{
if (item2.Any(n => n == item.ClusterA || n == item.ClusterB))
{
item2.Add(item.ClusterA);
item2.Add(item.ClusterB);
flag = false;
break;
}
}
if (flag)
{
cList.Add(new List<Cluster> { item.ClusterA, item.ClusterB });
}
}
foreach (var item in cList)
{
var nCluster = new Cluster() { Layer = layer };
foreach (var item2 in item.Distinct())
{
clusterList.Remove(item2);
nCluster.AddChild(item2);
}
nCluster.SetDatas();
clusterList.Add(nCluster);
}
layer++;
ReportProgress(100 - clusterList.Count * 100 / inputDataList.Count);
}
ReportProgress(100);
}