gpt4 book ai didi

bash - 使用 bash 将行拆分为训练集和验证集

转载 作者:行者123 更新时间:2023-11-29 09:46:46 30 4
gpt4 key购买 nike

我编写了以下 bash 脚本,将输入文件分成两部分用于以下签名:splitfiles 文件名 0.9其中0.9为训练集比例,其余为测试集。

function splitfiles()
{
length=$(wc -l $1)
top=$(($length*$2))
head -n $top $1 >traintxt
tail -n $(($length-$top)) $1 >valtxt

}

但它会为文件 110-1.txt 抛出以下错误

$splitfiles 110-1.txt 0.9

bash: 4756073 110-1.txt*0.9: 表达式语法错误(错误标记为“110-1.txt*0.9”)

最佳答案

如果你想随机拆分文件,你可以使用另一个 awk one liner 来使用 awk 的 rand() 函数来概率地拆分文件:

awk '{if(rand()<0.9) {print > output.train} else {print > output.test}}' input

如果您需要参数化文件名,这会有点复杂,因为您需要使用 -v 开关将它们传递给 awk:

in="myLibSVMdata"
train="$in.train"
test="$in.test"
awk -v train="$train" -v test="$test" '{if(rand()<0.9) {print > train} else {print > test}}' $in

关于bash - 使用 bash 将行拆分为训练集和验证集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35789421/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com