gpt4 book ai didi

java - XGBoost,从 CSR 格式的一行数据创建 DMatrix

转载 作者:行者123 更新时间:2023-12-02 02:08:10 25 4
gpt4 key购买 nike

我正在阅读the documentation for XGBoost ,特别是创建 CSR/CSC 格式的 DMatrix。该文档不是很有帮助:

To load sparse matrix in CSR/CSC format is a little complicated, 
the usage is like : suppose a sparse matrix : 1 0 2 0 4 0 0 3 3 1 2 0

尚不清楚上述假设的含义,也不清楚它如何映射到标准耶鲁格式 A, IA, JA vector 。所以我尝试从姬松茸测试数据集中加载第一行(libSVM 格式)

0 1:1 9:1 19:1 21:1 24:1 34:1 36:1 39:1 42:1 53:1 56:1 65:1 69:1 77:1 86:1 88:1 92:1 95:1 102:1 106:1 117:1 122:1        

我创建了一个 DMatrix,如下所示:

DMatrix dMatrix = new DMatrix(new long[] {0}, 
new int[] {1, 9, 19, 21, 24, 34, 36, 39, 42, 53, 56, 65, 69, 77, 86, 88, 92, 95, 102, 106, 117, 122},
new float[] {1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f},
DMatrix.SparseType.CSC, 1);

但这并没有给出任何明智的答案,它应该约为 4.941254E-4,但它给出的是 0.5。

我在这里做错了什么,如何以稀疏 DMatrix 的形式向 XGBoost 呈现单行?

最佳答案

回答我自己的问题:

这会起作用:

DMatrix dMatrix = new DMatrix(new long[] {0, 22},
new int[] {1, 9, 19, 21, 24, 34, 36, 39, 42, 53, 56, 65, 69, 77, 86, 88, 92, 95, 102, 106, 117, 122},
new float[] {1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f, 1f},
DMatrix.SparseType.CSR, 123);

换句话说,要对单个观察进行分类,headers 应该有 2 个条目,0 和非零索引数 (IA),indices 是列表索引 (JA),data 是非零值 (A) 的列表,在本例中类型为 CSR,shapeParam 是总列数(在本例中为 agaricus.txt 为 123) )。

关于java - XGBoost,从 CSR 格式的一行数据创建 DMatrix,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50426450/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com