作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了以下 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/
我是一名优秀的程序员,十分优秀!