当前位置: 首页>>代码示例>>C#>>正文


C# Cluster.SetDatas方法代码示例

本文整理汇总了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);
        }
开发者ID:kiichi54321,项目名称:GoocaBoocaBase,代码行数:73,代码来源:WardMethod.cs


注:本文中的Cluster.SetDatas方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。