static DatasetHandle CreateFromMat(Array data, LGBMDataType dataType, int isRowMajor, string parameters, DatasetHandle reference)
        {
            DatasetHandle dsHandle = null;
            var           numCols  = data.GetColsCount();
            var           numRows  = data.GetRowsCount();
            DatasetHandle ptr      = reference ?? DatasetHandle.Zero;
            IntPtr        dataPtr  = data.GetPointer();

            SafeCall(LGBM_DatasetCreateFromMat(dataPtr, (int)dataType, numRows, numCols, isRowMajor, parameters, ptr, out dsHandle));
            return(dsHandle);
        }
        /// <summary>
        /// </summary>
        /// <typeparam name="T">Type of data, should be int, long, float, double</typeparam>
        /// <param name="dsHandle"></param>
        /// <param name="fieldName"></param>
        /// <param name="data"></param>
        public void SetField <T>(string fieldName, IReadOnlyList <T> data) where T : struct
        {
            LGBMDataType dataType = 0; // Constants.TypeLgbmTypeMap[typeof(T)];

            if (data == null)
            {
                throw new ArgumentNullException(nameof(data));
            }
            if (!Constants.FieldDataTypeMap.TryGetValue(fieldName, out dataType))
            {
                throw new ArgumentException($"Invalid field name {fieldName}");
            }

            Array dataArray = data as T[] ?? data.ToArray();

            if (dataType != Constants.TypeLgbmTypeMap[typeof(T)])
            {
                if (fieldName == Constants.LABEL || fieldName == Constants.WEIGHT)
                {
                    dataArray = data.Select(t => (float)Convert.ToDouble(t)).ToArray();
                }
                else if (fieldName == Constants.GROUP || fieldName == Constants.GROUP_ID)
                {
                    dataArray = data.Select(t => Convert.ToInt32(t)).ToArray();
                }
            }

            IntPtr dataPtr    = IntPtr.Zero;
            int    dataLength = 0;

            if (data == null)
            {
                dataPtr    = IntPtr.Zero;
                dataLength = 0;
            }
            else
            {
                dataPtr    = dataArray.GetPointer();
                dataLength = dataArray.Length;
            }

            SafeCall(LGBM_DatasetSetField(_handle, fieldName, dataPtr, dataLength, dataType));
        }
Exemplo n.º 3
0
 public static extern int LGBM_BoosterPredictForMat(BoosterHandle handle, IntPtr data, LGBMDataType data_type, int numRows, int numCols, int is_row_major, LGBMPredictType predict_type, int num_iteration, [In][MarshalAs(UnmanagedType.LPStr)] string parameter, out int out_len, IntPtr out_result);
Exemplo n.º 4
0
 public static extern int LGBM_DatasetGetField(DatasetHandle handle, [In][MarshalAs(UnmanagedType.LPStr)] string field_name, out int out_len, out IntPtr out_ptr, out LGBMDataType out_type);
Exemplo n.º 5
0
 public static extern int LGBM_DatasetSetField(DatasetHandle handle, [In][MarshalAs(UnmanagedType.LPStr)] string field_name, IntPtr field_data, int num_element, LGBMDataType type);