Python sklearn.datasets.dump_svmlight_file 未能输出列的正确索引

标签 python scikit-learn svmlight

我想执行 SVM light 和 SVMrank,

所以我需要将我的数据处理成SVM light的格式。

但是我遇到了一个大问题......

我的Python代码如下:

import pandas as pd
import numpy as np
from sklearn.datasets import dump_svmlight_file

self.df = pd.DataFrame()
self.df['patent_id'] = patent_id_list
self.df['Target'] = class_list
self.df['backward_citation'] = backward_citation_list
self.df['uspc_originality'] = uspc_originality_list
self.df['science_linkage'] = science_linkage_list
self.df['sim_bc_structure'] = sim_bc_structure_list
self.df['claim_num'] = claim_num_list
self.qid = dataset_list

X = self.df[np.setdiff1d(self.df.columns, ['patent_id','Target'])]
y = self.df.Target

dump_svmlight_file(X,y,'test.dat',zero_based=False, query_id=self.qid,multilabel=False)

输出文件“test.dat”如下所示: enter image description here

但真实的数据是这样的: enter image description here

我的索引错误......

以第一个例子为例,第1列的值为7,第2~4列的值为0,第5列的值为2....

所以我的预期结果是这样的:

1 qid:1 1:7 5:2

但是输出文件的列索引完全错误......

不幸的是......我无法弄清楚问题发生在哪里......

我很长时间都无法解决这个问题......

感谢您的帮助!!

最佳答案

我更改了数据结构,我使用 np.array 来生成类似数组的输入。 终于,我成功了!

关于Python sklearn.datasets.dump_svmlight_file 未能输出列的正确索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36341320/

相关文章:

python - 在django中使用for循环迭代另一个url

python - 多元回归系数的标准误差

machine-learning - 如何解释 SVM-light 结果

python:将两个文件作为一个文件对象打开

python - 使用 django.contrib.auth 限制对 Ajax 服务的访问

python - XGBRegressor 评分方法返回奇怪的值

machine-learning - SVM-Light 显示损坏的精度/召回结果

c++ - 如何在 C++ 代码中使用 SVM Light? (可能不从 C++ 代码调用可执行文件)

python - 如何将 32 位整数编码为字节数组?

python - scikit的线性判别分析和Fisher判别分析是同一种方法吗?