将拟合公式定义为 y=ax+b , 其中 y=log10(W) , 变量 x=1/Eα**1/2 , 写出损失函数并推导最小二乘法拟合公式(使用 Markdown cell 的 Latex 公式编写) 写代码提取 a 和 b 的值
时间: 2023-11-28 19:47:08 浏览: 160
损失函数可以定义为:
$$
L(a,b) = \frac{1}{n} \sum_{i=1}^{n}(y_i - ax_i - b)^2
$$
其中,$n$ 是样本数量,$y_i$ 是第 $i$ 个样本的真实值,$x_i$ 是第 $i$ 个样本的特征,$a$ 和 $b$ 是待拟合的系数。
将 $y$ 和 $x$ 的定义代入损失函数,得到:
$$
L(a,b) = \frac{1}{n} \sum_{i=1}^{n}(\log_{10}(W_i) - a\frac{1}{\sqrt{E_{\alpha,i}}} - b)^2
$$
最小二乘法的目标是找到一组系数 $a$ 和 $b$,使得损失函数最小化。我们可以对 $L(a,b)$ 分别求偏导数,得到:
$$
\begin{aligned}
\frac{\partial L}{\partial a} &= -\frac{2}{n} \sum_{i=1}^{n}(\log_{10}(W_i) - a\frac{1}{\sqrt{E_{\alpha,i}}} - b)\frac{1}{\sqrt{E_{\alpha,i}}} \\
\frac{\partial L}{\partial b} &= -\frac{2}{n} \sum_{i=1}^{n}(\log_{10}(W_i) - a\frac{1}{\sqrt{E_{\alpha,i}}} - b)
\end{aligned}
$$
令上述偏导数分别为 0,解得:
$$
\begin{aligned}
a &= \frac{\sum_{i=1}^{n}(\log_{10}(W_i) - \bar{y})\frac{1}{\sqrt{E_{\alpha,i}}} - \bar{x}\sum_{i=1}^{n}(\frac{1}{\sqrt{E_{\alpha,i}}}-\bar{x})}{\sum_{i=1}^{n}(\frac{1}{E_{\alpha,i}}-\bar{x}^2)} \\
b &= \bar{y} - a\bar{x}
\end{aligned}
$$
其中,$\bar{y}$ 和 $\bar{x}$ 分别是 $y_i$ 和 $x_i$ 的均值。
下面是 Python 代码实现:
```python
import numpy as np
# 生成模拟数据
n = 100
W = np.random.uniform(1, 100, size=n)
E_alpha = np.random.uniform(1, 100, size=n)
# 定义特征和标签
X = 1 / np.sqrt(E_alpha)
Y = np.log10(W)
# 计算系数 a 和 b
x_mean = np.mean(X)
y_mean = np.mean(Y)
a = ((Y-y_mean)*X).sum() / ((1/E_alpha-x_mean**2).sum())
b = y_mean - a*x_mean
print("a = {:.4f}, b = {:.4f}".format(a, b))
```
其中,我们使用 `numpy` 生成了 100 个随机数作为模拟数据,然后根据上述公式计算出了系数 $a$ 和 $b$。
阅读全文