我正在使用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问题,因此大数据不是问题。究竟是什么导致了这个问题?
答案 0 :(得分:0)
此问题已解决。显然,列表式方法的相关性排序数据的最小值是1而不是0.最初我认为0意味着数据根本不相关。