0

我正在使用 RankLib 为我的数据(形状:218279 行 × 1504 列)使用 python 并得到错误代码 1,没有输出。我只是想知道关于 RankLib 上的错误代码是否有任何文档?

我正在为我的项目使用 Jupyter iPython,并使用 subprocess.run 运行该过程。如果您想知道,下面是我的训练代码。

train_data = 'learning_to_rank_data/training.txt'
test_data = ''
validate_data = ''
metric2t = 'NDCG@2'
model_dest = 'learning_to_rank_data/model.txt'

try:
    subprocess.run(['java', '-jar', ranklibjar, '-train', train_data, '-ranker', '3', '-metric2t', metric2t, '-save', model_dest], shell=True, check=True)

except subprocess.CalledProcessError as e:
    raise RuntimeError("command '{}' return with error (code {}): {}".format(e.cmd, e.returncode, e.output))

下面是输出:

RuntimeError: command '['java', '-jar', 'RankLib-2.9.jar', '-train', 'learning_to_rank_data/training.txt', '-ranker', '3', '-metric2t', 'NDCG@2', '-save', 'learning_to_rank_data/model.txt']' return with error (code 1): None

我尝试java -jar bin/RankLib.jar使用相同的方法()在 Jupyter 中运行 RankLib 库(即)subprocess.run,它工作正常(即返回代码 0)。

导致此错误代码 1 的原因是什么?可能是因为我的数据太大了吗?还是因为我只进行培训而不进行测试和验证?

任何帮助,将不胜感激!

编辑

我刚刚尝试将我的数据切片为 1000 行,但仍然存在返回码 1 问题,因此大数据不是问题。究竟是什么导致了这个问题?

4

1 回答 1

0

这个问题就解决了。显然,列表方法的相关性排名数据的最小值是 1 而不是 0。最初我认为 0 意味着数据根本不相关。

于 2018-05-05T04:29:36.930 回答