我在 python 中使用 Svmlight 包来训练 SVM等级模型。但是,我想不出一种将训练数据传递给学习函数的方法。我的python源代码如下:
import svmlight
trainingDat = open('train.dat','r')
model = svmlight.learn(trainingDat, type='ranking')
数据文件 (train.dat) 如下所示:
# query 1
3 qid:1 1:1 2:1 3:0 4:0.2 5:0
2 qid:1 1:0 2:0 3:1 4:0.1 5:1
1 qid:1 1:0 2:1 3:0 4:0.4 5:0
1 qid:1 1:0 2:0 3:1 4:0.3 5:0
# query 2
1 qid:2 1:0 2:0 3:1 4:0.2 5:0
2 qid:2 1:1 2:0 3:1 4:0.4 5:0
1 qid:2 1:0 2:0 3:1 4:0.1 5:0
1 qid:2 1:0 2:0 3:1 4:0.2 5:0
# query 3
2 qid:3 1:0 2:0 3:1 4:0.1 5:1
3 qid:3 1:1 2:1 3:0 4:0.3 5:0
4 qid:3 1:1 2:0 3:0 4:0.4 5:1
1 qid:3 1:0 2:1 3:1 4:0.5 5:0
运行代码时出现以下错误:
TypeError: document should be a tuple
我找了类似的问题,发现了一个:Load svmlight format error
此链接中的答案建议实现一个解析器,该解析器从上面提供的数据文件中读取并将其转换为特征和目标的元组。但是,在训练ranker时,我们需要提供有关实例所属集合的信息(理论上)。
我的问题:使用排名配置时如何将训练数据传递给 svm learn 方法?
先感谢您!!