XGBOOST 之稀疏数据的处理

                            XGBOOST 之稀疏数据的处理

 

当数据及其稀疏的时候,不应该转换为numpy等形式,尤其是点击数据。

商品成千上万,用户点击商品的种类只是其中的某一些类型,但是以此建立起来的点击矩阵的纬度却是庞大而冗余。

解决方式1:

将数据转化为libsvm存储的形式, 数据的第一列是label, 第二列之后的是特征

label   key1:value1  key2:value2  key3:value3

XGBoost可以加载libsvm格式的文本数据,加载的数据格式可以为Numpy的二维数组和XGBoost的二进制的缓存文件。加载的数据存储在对象DMatrix中。

加载libsvm格式的数据和二进制的缓存文件时可以使用如下方式:

dtrain = xgb.DMatrix('train.svm.txt')
dtest = xgb.DMatrix('test.svm.buffer')

直接将数据导入即可。

解决方式2:

  • 加载numpy的数组到DMatrix对象时,可以用如下方式
  • 这种是通常会使用的方法,直接将数据处理成numpy 的形式,然后进行五折交叉验证,直接调包,通过数组的index处理即可(一般情况,比如样本,字段的情况)
data = np.random.rand(5,10) # 5 entities, each contains 10 features
###生成一个5个样本,特征个数为10的训练集
label = np.random.randint(2, size=5) # binary target
####生成训练集对应的标签
dtrain = xgb.DMatrix( data, label=label)
####
通过标签以及训练数据,生成XGBOOST可以处理的形式
  • scipy.sparse格式的数据转化为 DMatrix格式时,可以使用如下方式
  • 将稀疏数据如此表示,只表示其中有值的点,将数据表示成三元组,需要行,列,value值,然后将数据放入
csr = scipy.sparse.csr_matrix( (dat, (row,col)) )
dtrain = xgb.DMatrix( csr )

 

 

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页