【发布时间】:2021-03-30 19:33:34
【问题描述】:
我正在尝试将 csv(有 10 列)转换为 vowpal wabbit 输入格式 txt 文件。一些 csv 列具有整数值,一些具有字符串(例如:com.12346.xyz)。例如,如果我的 csv 列如下所示:
loss weight SSD_id weight label imp feat_val
0.693147 0.693147 1 1.0 -1.0000 0.0000 com.12346.xyz
0.419189 0.145231 2 2.0 1.0000 -1.8559 com.12346.xyz
0.235457 0.051725 4 4.0 -1.0000 -2.7588 com.12356.xyz
6.371911 12.508365 8 8.0 -1.0000 -3.7784 com.12346.xyz
3.485084 0.598258 16 16.0 1.0000 -2.2767 com.12346.xyz
1.765249 0.045413 32 32.0 -1.0000 -2.8924 com.1236.xyz
1.017911 0.270573 64 64.0 -1.0000 -3.0438 com.12236.xyz
0.611419 0.204927 128 128.0 1.0000 -3.1539 com.16746.xyz
0.469127 0.326834 256 256.0 -1.0000 -1.6101 com.1946.xyz
0.403473 0.337820 512 512.0 1.0000 -2.8843 com.126.xyz
0.337348 0.271222 1024 1024.0 -1.0000 -2.5209 com.1346.xyz
0.328909 0.320471 2048 2048.0 1.0000 -2.0732 com.1234.xyz
0.309401 0.289892 4096 4096.0 1.0000 -2.7639 com.12396.xyz
vowpal wabbit 输入格式如下所示:
label weight |i imp SSD_id loss |c feat_val
并且在 vowpal wabbit txt 文件中的值应该是:
-1 0.051725 |i imp:-2.7588 SSD_id:4 loss:0.235457 |c feat_val=com.12356.xyz
1 0.598258 |i imp:-2.7588 SSD_id:4 loss:3.485034 |c feat_val=com.12346.xyz
... 等等... 对于所有行值。我在 csv 文件中有大量行,我想将它们转换为上述格式并将它们全部保存在单个 txt 文件中。我从下面给出的这个小功能开始:
def to_new_format(document, label=None):
return str(label or '') + ' |i ' + ' '.join(re.findall('\w{3,}', document.lower())) + '\n'
to_new_format(str(text_train[1])
但是经过多次使用数据框、csv 格式和尝试功能的试验后,我现在完全迷失了。有人可以指导我如何用最少的代码行来实现这一点。
【问题讨论】:
标签: python vowpalwabbit