예제 #1
0
        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);
        }
예제 #2
0
        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);
        }