将数据框保存为带有特定分隔符的 txt

问题描述 投票:0回答:1

我想将我的数据框保存为带有特定分隔符(libsvm 格式)的 txt 格式,如下所示:

1 qid:0 0:1.465648768921554 1:-0.2257763004865357 2:0.06752820468792384 3:-1.424748186213457 4:-0.5443827245251827
1 qid:0 0:1.465648768921554 1:-0.2257763004865357 2:0.06752820468792384 3:-1.424748186213457 4:-0.5443827245251827
2 qid:0 0:0.7384665799954104 1:0.1713682811899705 2:-0.1156482823882405 3:-0.3011036955892888 4:-1.478521990367427

注意前两列用空格分隔,然后用冒号分隔,其中冒号前的整数是该列的标识符。

这是我当前的数据集:

data = {'label': [2,3,2],
        'qid': ['qid:0', 'qid:1','qid:0'],
       '0': [0, 0, 0],
       '0': [0.4967, 0.4967,0.4967],
       '1': [1,1,1],
       '1': [0.4967, 0.4967,0.4967],
       '2': [2,2,2],
       '2': [0.4967, 0.4967,0.4967],
       '3': [3,3,3],
       '2': [0.4967, 0.4967,0.4967],
       '4': [4,4,4]}

df = pd.DataFrame(data)

有没有办法将其另存为 txt 以完全匹配该格式?

对于上下文,我的机器学习模型是在这种特定的 txt 格式的数据集上训练的,我需要匹配它才能将其用于我自己的数据集。

python pandas libsvm
1个回答
0
投票

类似的问题被回答here,有一个特定的sklearn方法:dump_svmlight_file.

对于这种特殊情况,您需要添加 quid 并删除修改以使 qid 只是数字整数并删除其他整数列:

从 sklearn.datasets 导入 dump_svmlight_file

def df_to_libsvm(df: pd.DataFrame):
    x = df.drop(columns = ['label','qid'], axis=1)
    y = df['label']
    query_id  = df['qid']
    dump_svmlight_file(X=x, y=y, query_id= query_id, f='libsvm.dat', zero_based=True)

df_to_libsvm(df)
© www.soinside.com 2019 - 2024. All rights reserved.