public ClusterResults <TRow, TColumn> ClusterColumns() { var clusteredGroups = DataFrameGroups.Select(ClusterDataFrameGroup).ToList(); var newDataSet = new ClusterDataSet <TRow, TColumn>(RowLabels, clusteredGroups.Select(tuple => tuple.Item1)); return(new ClusterResults <TRow, TColumn>(newDataSet, null, ImmutableList.ValueOf(clusteredGroups.Select(tuple => tuple.Item2)))); }
public ClusterDataSet(IEnumerable <TRow> rowLabels, IEnumerable <ImmutableList <DataFrame> > dataFrameGroups) { DistanceMetric = ClusterMetricType.EUCLIDEAN; RowLabels = ImmutableList.ValueOf(rowLabels); DataFrameGroups = ImmutableList.ValueOf(dataFrameGroups); foreach (var group in DataFrameGroups.Where(group => group.Count > 0)) { var firstGroup = group[0]; if (firstGroup.RowCount != RowLabels.Count) { throw new ArgumentException(@"Wrong number of rows", nameof(dataFrameGroups)); } } }
public ClusterDataSet <TRow, TColumn> ReorderRows(IList <int> newOrdering) { return(new ClusterDataSet <TRow, TColumn>(Reorder(RowLabels, newOrdering), DataFrameGroups.Select(group => ImmutableList.ValueOf(group.Select(frame => frame.ReorderRows(newOrdering)))))); }
public IEnumerable <PcaResults <TColumn> > PerformPcaOnColumnGroups(int maxLevels) { return(DataFrameGroups.Select(group => PerformPca(group, maxLevels))); }