Lemur Ra​​nkLib在训练时返回代码1

时间:2018-04-28 12:40:26

标签: python machine-learning ranking information-retrieval lemur

我正在使用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问题,因此大数据不是问题。究竟是什么导致了这个问题?

1 个答案:

答案 0 :(得分:0)

此问题已解决。显然,列表式方法的相关性排序数据的最小值是1而不是0.最初我认为0意味着数据根本不相关。