2016-03-31 5 views
1

Ich mag SVM Licht und SVM Rang auszuführen,Python sklearn.datasets.dump_svmlight_file zur Ausgabe versäumt, den richtigen Index der Spalte

so muß ich meine Daten in das Format von SVM Licht verarbeiten.

Aber ich hatte ein großes Problem ....

Meine Python-Codes sind unter:

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) 

Die Ausgabedatei "test.dat" ist wie folgt aussehen: enter image description here

Aber die echten Daten sehen so aus: enter image description here

Ich habe einen falschen Index ....

Nehmen Sie die erste Instanz zum Beispiel ist der Wert der Spalte 1 7, und die Werte der Spalte 2 bis 4 Nullen sind, wird der Wert der Spalte 5 ist 2 ....

So ist mein erwartetes Ergebnis aussehen dies wie:

1 qid: 1 1: 7 5: 2

aber der Spaltenindex der Ausgabedatei ist völlig falsch ....

und leider ... ich kann nicht herausfinden Wo tritt das Problem auf ....

ich dieses Problem für eine lange Zeit nicht beheben kann ....

Vielen Dank für die Hilfe !!

Antwort

2

Ich ändere die Datenstruktur, ich benutze np.array, um Array-ähnliche Eingabe zu erzeugen. Endlich gelingt es mir!

0

Wenn Sie beim Laden in einen numpy Array interessiert sind, versuchen:

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

wo 2 der Index des Zielspalts ist

Verwandte Themen