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)); }
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);
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);
public static extern int LGBM_DatasetSetField(DatasetHandle handle, [In][MarshalAs(UnmanagedType.LPStr)] string field_name, IntPtr field_data, int num_element, LGBMDataType type);