Newer
Older
rnsr-geo-ml-dvc / bin / evaluate-areas.sh
#!/usr/bin/env bash

areas=${1:-*} # * or ANGERS

printf "area\tprecision\trecall\n" > precision.tsv

for areaPath in areas/${areas}
do
    area="${areaPath#areas/}"
    echo "${area} ------------"
    printf "var\tvalue\n" > tmp.tsv
    bin/fasttext test \
        "models/${area}.ftz" \
        "areas/${area}/addresses-test.txt" >> tmp.tsv
    csvjson -t tmp.tsv > tmp.json
    fx < tmp.json \
        ".reduce((o, i) => ({...o, [i.var]: i.value}), {})" \
        "console.log('${area}' + '\t' + this['P@1'] + '\t' + this['R@1'])" >> precision.tsv 2> /dev/null
done

rm tmp.tsv tmp.json

# Plots
csvjson -t < precision.tsv > precision.json

# Metrics
mean=$(fx precision.json '.map(i => i.precision)' 'R.mean')
median=$(fx precision.json '.map(i => i.precision)' 'R.median')
min=$(fx precision.json '.map(i => i.precision)' 'Math.min(...this)')
max=$(fx precision.json '.map(i => i.precision)' 'Math.max(...this)')
printf "mean\tmedian\tmin\tmax\n" > metrics.tsv
printf "%f\t%f\t%f\t%f\n" ${mean/./,} ${median/./,} ${min/./,} ${max/./,} | sed -E 's/,/\./g' >> metrics.tsv
csvjson -t metrics.tsv > metrics.json