【问题标题】:Java - xgboost DMatrix inputJava - xgboost DMatrix 输入
【发布时间】:2018-03-20 09:17:05
【问题描述】:

使用 xgboost4j 包在 java 中创建 DMatrix 时,首先我成功使用“文件路径”创建矩阵。

DMatrix trainMat = new DMatrix("...\\xgb_training_input.csv");

但是当我尝试训练模型时:

Booster booster = XGBoost.train(trainMat, params, round, watches, null, null);

我收到以下错误:

...regression_obj.cc:108: label must be in [0,1] for logistic regression

现在我的数据是可靠的。我已经在 python 中构建的 xgb 模型上检查了它。 我猜问题出在数据格式上。 目前格式如下:

x1,x2,x3,x4,x5,y

其中 x1-x5 是“实数”数字,y 是 0 或 1。文件结尾是 .csv

也许分隔符不应该是','?

【问题讨论】:

    标签: java xgboost


    【解决方案1】:

    DMatrix 获取一个 .libsvm 文件。可以很容易地用python创建。

    libsvm 看起来像这样:

    target 0:column1 1:column2 2:column3 ...等等

    所以目标是第一列,而其他所有列(预测器)都附加到增加的索引,中间有“:”。

    【讨论】:

    • 想一想,这种保存数据的方式非常适合稀疏数据。如果该列(增加的索引)的数据值为 NA 或 0,则根本不写它。
    • 你有这个功能可以将文本转换为 libsvm 以供假人使用吗?
    • 如果文本是我上面提到的格式,它已经是.libsvm 格式。如果没有,它必须具有一定的结构。简单的“文本”不会削减它。
    猜你喜欢
    • 2017-05-10
    • 2016-07-05
    • 2016-05-19
    • 1970-01-01
    • 2017-08-02
    • 2023-03-22
    • 2022-08-11
    • 2019-04-29
    • 2016-07-04
    相关资源
    最近更新 更多