我在学习 Linux 期间有一个项目任务,并决定制作一个程序来使用线性回归预测数据。该程序使用 Bash,距离完成还很遥远。这是代码示例:
#!/bin/bash
# Variables for data
src="data.csv"
# Read data
IFS='.' readarray -t array < "$src"
# Remove header
unset "array[0]"
# Display content
for item in "${array[@]}"; do
echo "$item"
done
# Initialize variables x and y
x=()
y=()
# Data separation loop
for i in "${!array[@]}"; do
row=("${array[$i]}")
x+=("${row[0]}")
y+=("${row[1]}")
done
# Calculate mean and standard deviation for x and y
calculate_mean() {
local data=("${@}")
local sum=0
local mean
for item in "${data[@]}"; do
sum=$(awk "BEGIN{ sum+=$sum+$item }END{ print sum }")
done
mean=$(awk "BEGIN{ print $sum / ${#data[@]} }")
echo "$mean"
}
calculate_std_deviation() {
local data=("${@}")
local mean=$1
local sum_squares=0
local variance
local std_deviation
for item in "${data[@]}"; do
sum_squares=$(awk "BEGIN{ sum+=$sum_squares+(diff*diff )} END{ print sum }")
done
variance=$(awk "BEGIN{ print $sum_squares / ${#data[@]} }")
std_deviation=$(awk "BEGIN{ print sqrt($variance) }")
echo "$std_deviation"
}
x_mean=$(calculate_mean "${x[@]}")
x_std=$(calculate_std_deviation "${x[@]}" "$x_mean")
y_mean=$(calculate_mean "${y[@]}")
y_std=$(calculate_std_deviation "${y[@]}" "$y_mean")
echo "Mean x: $x_mean"
echo "Standard deviation x: $x_std"
echo "Mean y: $y_mean"
echo "Standard deviation y: $y_std"
当我在 Kali 终端上运行它时,程序在打印数组后停止了。我在尝试解决和弄清楚时感到困惑。我知道这个程序没有显示线性回归的部分,但是这里的问题不能让我继续,而且我还在寻找一种有效且简单的方法来在 Bash 上实现它
我不确定它是什么。我只是希望它显示声明函数的均值和标准差。