Esempio n. 1
0
        /// <summary>
        /// Creates columns based of the columns properties argument
        /// </summary>
        /// <param name="colProp"></param>
        /// <returns></returns>
        private ColumnData CreateColumn(MetaColumn colProp)
        {
            //determine column type
            ColumnType colType;

            if (colProp.Type.Equals("Numeric", StringComparison.OrdinalIgnoreCase))
            {
                colType = ColumnType.Numeric;
            }
            else if (colProp.Type.Equals("Binary", StringComparison.OrdinalIgnoreCase))
            {
                colType = ColumnType.Binary;
            }
            else if (colProp.Type.Equals("Category", StringComparison.OrdinalIgnoreCase) || colProp.Type.Equals("Categorical", StringComparison.OrdinalIgnoreCase))
            {
                colType = ColumnType.Category;
            }
            else
            {
                colType = ColumnType.Unknown;
            }

            //determine encoding for category column type
            CategoryEncoding colEncoding;

            if (colProp.Encoding.Equals("Level", StringComparison.OrdinalIgnoreCase))
            {
                colEncoding = CategoryEncoding.Level;
            }
            else if (colProp.Encoding.Equals("1 out of N-1", StringComparison.OrdinalIgnoreCase) ||
                     colProp.Encoding.Equals("OnevsAll_1", StringComparison.OrdinalIgnoreCase))
            {
                colEncoding = CategoryEncoding.OnevsAll_1;
            }
            else if (colProp.Encoding.Equals("1 out of N", StringComparison.OrdinalIgnoreCase) ||
                     colProp.Encoding.Equals("OnevsAll", StringComparison.OrdinalIgnoreCase))
            {
                colEncoding = CategoryEncoding.OnevsAll;
            }
            else
            {
                colEncoding = CategoryEncoding.None;
            }


            //create column data type
            var isOutput = colProp.Param.Equals("Output", StringComparison.OrdinalIgnoreCase);

            ColumnData col = new ColumnData(isOutput);

            if (colProp.Scale.Equals("MinMax", StringComparison.OrdinalIgnoreCase))
            {
                col.SetNormalization(Scaling.MinMax);
            }
            else if (colProp.Scale.Equals("Gauss", StringComparison.OrdinalIgnoreCase))
            {
                col.SetNormalization(Scaling.Gauss);
            }
            else if (colProp.Scale.Equals("None", StringComparison.OrdinalIgnoreCase))
            {
                col.SetNormalization(Scaling.None);
            }
            else
            {
                col.SetNormalization(Scaling.None);
            }


            //set missing value action
            if (colProp.MissingValue.Equals("Ignore", StringComparison.OrdinalIgnoreCase))
            {
                col.MissingValue = MissingValue.Ignore;
            }
            else if (colProp.MissingValue.Equals("Average", StringComparison.OrdinalIgnoreCase))
            {
                col.MissingValue = MissingValue.Average;
            }
            else if (colProp.MissingValue.Equals("Random", StringComparison.OrdinalIgnoreCase))
            {
                col.MissingValue = MissingValue.Random;
            }
            else if (colProp.MissingValue.Equals("Mode", StringComparison.OrdinalIgnoreCase))
            {
                col.MissingValue = MissingValue.Mode;
            }
            else if (colProp.MissingValue.Equals("Max", StringComparison.OrdinalIgnoreCase))
            {
                col.MissingValue = MissingValue.Max;
            }
            else
            {
                col.MissingValue = MissingValue.Min;
            }

            //set column name and type
            col.Name           = colProp.Name;
            col.ColumnDataType = colType;
            col.Encoding       = colEncoding;
            col.Id             = colProp.Id;
            col.Index          = colProp.Index;
            return(col);
        }