Python 如何将压缩形式的SVMlight格式文件加载到pandas?

Python 如何将压缩形式的SVMlight格式文件加载到pandas?,python,pandas,scikit-learn,svmlight,Python,Pandas,Scikit Learn,Svmlight,我有SVMlight格式的数据标签功能1:value1功能2:v2。。。因此 talk.politics.guns a:12 about:1 abrams:1 absolutely:1 talk.politics.mideast I:4 run:10 go:3 我尝试了sklearn.load_svmlight_文件,但它似乎不适用于分类字符串功能和标签。我正在尝试将其存储到熊猫数据帧中。任何提示都将不胜感激。您可以手工完成。。。 在数据帧中转换所需文件的一种方法: SVM格式文件=~/SVM

我有SVMlight格式的数据标签功能1:value1功能2:v2。。。因此

talk.politics.guns a:12 about:1 abrams:1 absolutely:1
talk.politics.mideast I:4 run:10 go:3
我尝试了sklearn.load_svmlight_文件,但它似乎不适用于分类字符串功能和标签。我正在尝试将其存储到熊猫数据帧中。任何提示都将不胜感激。

您可以手工完成。。。 在数据帧中转换所需文件的一种方法:

SVM格式文件=~/SVM格式文件样本 阅读列表 对于opensvmformat_文件,mode=r作为fp: svmformat_list=fp.readlines 对于每一行,我们将key:values保存到dict 熊猫列表=[] 对于SVM格式列表中的行: 行_dict=dict 行分割=行分割“ 行目录[标签]=行拆分[0] 对于第_行拆分[1:]中的列: col=col.rstrip删除'\n' col_split=col.split':' 键,值=列拆分[0],列拆分[1] 行dict[键]=值 熊猫列表 示例文件的结果数据帧:

pd.DataFrame(pandas_list)

我想指出,如果你的一个词是“标签”,那么Christian Gomes接受的答案将失败,因为你将用向量中的单词数覆盖分类标签。此外,由于计数未转换为整数,因此无法进行任何计算

因为您肯定知道每个特性、值对都由一个:分隔,所以您可以通过将“label”键设置为类似于“:label”的方式来解决这个问题。这并不理想,但可以避免碰撞

或者,您可以将标签存储在单独的数据框中,这可能是一个更好的解决方案,因为您可能不想对分类标签进行计算

SVM格式文件=~/SVM格式文件样本 阅读列表 对于opensvmformat_文件,mode=r作为fp: svmformat_list=fp.read.splitlines 对于每一行,我们将key:values保存到dict 熊猫标签列表=[] 熊猫_特征_列表=[] 对于SVM格式列表中的行: 特征_dict={} 项目=行。拆分 熊猫标签列表。追加{'label':项[0]} 对于项目[1:]中的配对: 特征名称,计数=对。拆分“:” 特征dict[特征名称]=intcount 熊猫\u功能\u列表。追加功能\u目录 然后,使用Christian使用的相同数据,您现在有两个数据帧:

>>>pd.DataFramepandas\u标签\u列表 >>>标签 0.谈论政治 1.谈论政治、中东 >>>pd.DataFramePanda\u功能\u列表 >>>a关于艾布拉姆斯绝对我跑去 0 12 11 11楠楠楠楠楠 1楠楠4 10 3