Python sklearn.datasets.dump_svmlight_file无法输出列

时间:2016-03-31 18:48:39

标签: python scikit-learn svmlight

我想执行SVM灯和SVM等级,

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

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

我的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

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

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

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

谢谢你的帮助!!

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

如果您对加载到numpy数组感兴趣,请尝试:

X = clicks_train[:,0:2]
y = clicks_train[:,2]

其中2是目标列的索引