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 )

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值