private T[][] GetDataPerClass <T>(TableFixedData data, int columnIndex, IValueConverter <T> converter = null) { var retLists = new List <T> [data.ClassesValue.Length]; var rows = data.Count; T[][] ret = new T[data.ClassesValue.Length][]; for (int index = 0; index < rows; index++) { var classValue = data.Class(index); if (retLists[classValue] == null) { retLists[classValue] = new List <T>(); } if (converter != null) { retLists[classValue].Add(converter.Convert(data[index, columnIndex])); } else { retLists[classValue].Add((T)data[index, columnIndex]); } } for (int index = 0; index < data.ClassesValue.Length; index++) { ret[index] = retLists[index].ToArray(); } return(ret); }
public static DataSample[] ToSample(TableFixedData tableFixedData) { var samples = new DataSample[tableFixedData.Count]; for (int rowIndex = 0; rowIndex < tableFixedData.Count; rowIndex++) { var currentSample = new DataSample { DataPoints = new DataPoint[tableFixedData.Attributes.Length - 1], ClassId = tableFixedData.Class(rowIndex) }; int dataPointIndex = 0; for (int columnIndex = 0; columnIndex < tableFixedData.Attributes.Length; columnIndex++) { if (tableFixedData.Attributes[columnIndex] != TableData.ClassAttributeName) { var value = tableFixedData[rowIndex, columnIndex]; var dataPoint = new DataPoint { ColumnId = columnIndex, Value = tableFixedData.IsDiscreteColumn(columnIndex) ? Convert.ToDouble(tableFixedData.GetSymbol(value.ToString(), columnIndex)) : Convert.ToDouble(value) }; currentSample.DataPoints[dataPointIndex] = dataPoint; dataPointIndex++; } } samples[rowIndex] = currentSample; } return(samples); }