Exemple #1
0
 public ClusterResults(ClusterDataSet <TRow, TColumn> dataSet, DendrogramData rowDendrogram,
                       ImmutableList <DendrogramData> columnDendrograms)
 {
     DataSet                = dataSet;
     RowDendrogram          = rowDendrogram;
     ColumnGroupDendrograms = columnDendrograms;
 }
Exemple #2
0
        private Tuple <ImmutableList <DataFrame>, DendrogramData> ClusterDataFrameGroup(ImmutableList <DataFrame> group)
        {
            if (group.Count == 0 || group[0].ColumnHeaders.Count <= 1)
            {
                return(Tuple.Create(group, (DendrogramData)null));
            }
            var points = new double[group[0].ColumnHeaders.Count,
                                    RowCount *group.Count];

            for (int iRow = 0; iRow < RowCount; iRow++)
            {
                for (int iFrame = 0; iFrame < group.Count; iFrame++)
                {
                    var frame = group[iFrame];
                    int y     = iRow * group.Count + iFrame;
                    for (int x = 0; x < frame.DataColumns.Count; x++)
                    {
                        points[x, y] = frame.DataColumns[x][iRow];
                    }
                }
            }
            alglib.clusterizercreate(out alglib.clusterizerstate s);
            alglib.clusterizersetpoints(s, points, DistanceMetric.AlgLibValue);
            alglib.clusterizerrunahc(s, out alglib.ahcreport rep);
            var newGroup       = ImmutableList.ValueOf(group.Select(frame => frame.ReorderColumns(rep.p)));
            var dendrogramData = new DendrogramData(rep.pz, rep.mergedist);

            return(Tuple.Create(newGroup, dendrogramData));
        }