python - 如何在不使用 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
我不确定我执行的计算是否不正确,或者所提供的方法是否不适用于系数本身。
解决方案
I believe you just need to store the mean and standard deviations
m = data.mean()
s = data.std()
And then inverse the transformation
theta * s + m
推荐阅读
- javascript - 一键下载多个 jpg 无 zip
- c# - 如何查找Json数组组合出现了多少次
- c# - 如何删除关系 n:n 中的实体?
- r - 将新数据的预测功能与 tidyverse 一起使用
- javascript - 在 Rails 中处理持续时间
- sas - 用SAS中的前一个/转发其他字符串替换字符串
- r - 读取文件并在 R 中提取文本
- javascript - 过滤 Leaflet 中的 geojson 点而不对它们进行聚类
- reactjs - 没有为反应页面设置powershell invoke-webrequest websession?
- openstreetmap - 开放街道地图中的瓷砖样式(带有传单)