10分钟
数据接口
4.1.1 数据格式
lightgbm
支持csv,tsv,libsvm
格式的输入数据文件。其中:- 可以包含标题
- 可以指定
label
列、权重列、query/group id
列 - 也可以指定一个被忽略的列的列表。
- train_data = lgb.Dataset('train.svm.txt')
lightgbm
也支持numpy 2d array
以及pandas
对象。 data = np.random.rand(500, 10) # 500 个样本, 每一个包含 10 个特征label = np.random.randint(2, size=500) # 二元目标变量, 0 和 1train_data = lgb.Dataset(data, label=label)lightgbm
也支持scpiy.sparse.csr_matrix
: csr = scipy.sparse.csr_matrix((dat, (row, col)))train_data = lgb.Dataset(csr)lightgbm
可以通过Lightgbm
二进制文件来保存和加载数据。 train_data = lgb.Dataset('train.bin')train_data.save_binary('train2.bin')- 创建验证集:(要求验证集和训练集的格式一致) test_data = lgb.Dataset('test.svm', reference=train_data) 或者: train_data = lgb.Dataset('train.svm.txt')test_data = train_data.create_valid('test.svm')
lightgbm
中的Dataset
对象由于仅仅需要保存离散的数据桶,因此它具有很好的内存效率。 但是由于numpy array/pandas
对象的内存开销较大,因此当使用它们来创建Dataset
时,你可以通过下面的方式来节省内存:- 构造
Dataset
时,设置free_raw_data=True
- 在构造
Dataset
之后,手动设置raw_data=True
- 手动调用
gc
- 构造
categorical_feature
的支持:- 需要指定
categorical_feature
参数 - 对于
categorical_feature
特征,首选需要将它转换为整数类型,并且只支持非负数。如果转换为连续的范围更佳。
- 需要指定
学员评价