如何在不使用 Scikit-Learn 的情况下对归一化数据执行回归后检索原始系数?

我正在使用pandas如下所示的文件读取数据:


data.head()


   ldr1  ldr2  servo

0   971   956     -2

1   691   825   -105

2   841   963    -26

3   970   731     44

4   755   939    -69

我继续规范化这些数据以执行梯度下降:


my_data = (my_data - my_data.mean())/my_data.std()

my_data.head()


       ldr1      ldr2     servo

0  1.419949  1.289668  0.366482

1 -0.242834  0.591311 -1.580420

2  0.647943  1.326984 -0.087165

3  1.414011  0.090200  1.235972

4  0.137231  1.199041 -0.899949

我执行多元回归并最终得到标准化数据的拟合参数:


Thetas:  [[ 0.31973117  0.45401309 -0.12941108]]

我想在原始数据上绘制最适合的平面,而不是使用归一化 thetas 的归一化数据。


我曾经scipy.optimize.curve_fit执行多元线性回归并提出最佳拟合参数。我知道原始 thetas 应该接近以下内容:


[   0.26654135   -0.15218007 -107.79915373]

在不使用 Scikit-Learn 的情况下,如何获得原始数据集的“原始”thetas 以便进行绘图?


任何建议将不胜感激。


根据下面的答案:


m

ldr1     731.891429

ldr2     714.080000

servo    -21.388571

dtype: float64

s

ldr1     168.392347

ldr2     187.583221

servo     52.904576

dtype: float64

然后我继续:


original_thetas = np.dot(theta, s) + m

产生:


original_thetas

ldr1     862.420572

ldr2     844.609144

servo    109.140572

dtype: float64

我不确定我执行的计算是否不正确,或者所提供的方法是否不适用于系数本身。


蝴蝶不菲
浏览 145回答 1
1回答

蛊毒传说

我相信你只需要存储平均值和标准差m = data.mean()s = data.std()然后逆变换theta * s + m
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python