7.1.1 数据格式

    1. xgboost 支持直接从下列格式的文件中加载数据:

      • libsvm 文本格式的文件。其格式为:

      • xgboost binary buffer 文件

      1. dtrain = xgb.DMatrix('train.svm.txt') #libsvm 格式
      2. dtest = xgb.DMatrix('test.svm.buffer') # xgboost binary buffer 文件
    2. xgboost 也支持从二维的numpy array 中加载数据

    3. 你也可以从scipy.sparse array 中加载数据

      1. csr = scipy.sparse.csr_matrix((dat, (row, col)))
      2. dtrain = xgb.DMatrix(csr)

    7.1.2 DMatrix

    1. DMatrix: 由xgboost 内部使用的数据结构,它存储了数据集,并且针对了内存消耗和训练速度进行了优化。

      • 参数:

        • data:表示数据集。可以为:

          • 一个字符串,表示文件名。数据从该文件中加载
          • 一个二维的 numpy array, 表示数据集。
        • label:一个序列,表示样本标记。

        • missing: 一个值,它是缺失值的默认值。

        • weight:一个序列,给出了数据集中每个样本的权重。

        • silent: 一个布尔值。如果为True,则不输出中间信息。

        • nthread

    2. 属性:

      • feature_names: 返回每个特征的名字
      • feature_types: 返回每个特征的数据类型
    3. 方法:

      • .get_base_margin(): 返回一个浮点数,表示DMatrixbase margin

        .set_base_margin(margin): 设置DMatrixbase margin

        • 参数:margin: t一个序列,给出了每个样本的prediction margin
      • .get_float_info(field): 返回一个numpy array, 表示DMatrix 的 。

        .set_float_info(field,data): 设置DMatrixfloat property

        .set_float_info_npy2d(field,data): 设置DMatrixfloat property 。这里的data 是二维的numpy array

        • 参数:

          • field: 一个字符串,给出了information 的字段名。注:意义未知。
          • data: 一个numpy array,给出了数据集每一个点的float information
      • .get_uint_info(field): 返回DMatrixunsigned integer property

        .set_unit_info(field,data): 设置DMatrixunsigned integer property

        • 参数:

          • field: 一个字符串,给出了information 的字段名。注:意义未知。
          • data: 一个numpy array, 给出了数据集每个点的uint information
        • 返回值:一个numpy array,表示数据集的unsigned integer information
      • .get_label(): 返回一个numpy array,表示DMatrixlabel

        .set_label_npy2d(label): 设置样本标记。这里的label 为二维的numpy array

        • 参数: label: 一个序列,表示样本标记
      • .get_weight(): 一个numpy array,返回DMatrix 的样本权重。

        .set_weight(weight): 设置样本权重。

        .set_weight_npy2d(weight): 设置样本权重。这里的 为二维的numpy array

        • 参数:weight:一个序列,表示样本权重
      • .num_col(): 返回DMatrix 的列数

        • 返回值:一个整数,表示特征的数量
      • .num_row(): 返回DMatrix 的行数

        • 返回值:一个整数,表示样本的数量
      • .set_group(group): 设置DMatrix 每个组的大小(用于排序任务)

        • 参数:group: 一个序列,给出了每个组的大小
      • slice(rindex): 切分DMaxtrix ,返回一个新的DMatrix。 该新的DMatrix 仅仅包含rindex

        • 参数:rindex: 一个列表,给出了要保留的index
        • 返回值:一个新的DMatrix 对象
    4. 示例:

      data/train.svm.txt 的内容:

      1. 1 1:1 2:2
      2. 1 1:2 2:3
      3. 1 1:3 2:4
      4. 1 1:4 2:5
      5. 0 1:5 2:6
      6. 0 1:6 2:7
      7. 0 1:7 2:8
      8. 0 1:8 2:9

      测试代码: