Rrz*_*rz0 3 python machine-learning linear-regression
我正在从文件中读取数据,该文件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
Run Code Online (Sandbox Code Playgroud)
我继续将这些数据标准化以执行梯度下降:
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
Run Code Online (Sandbox Code Playgroud)
我执行多元回归并以归一化数据上的拟合参数结束:
Thetas: [[ 0.31973117 0.45401309 -0.12941108]]
Run Code Online (Sandbox Code Playgroud)
我想将最适合的平面绘制在原始数据上,而不是使用归一化theta 的归一化数据。
我曾经scipy.optimize.curve_fit执行多元线性回归,并提出了最佳拟合参数。我知道原始thetas应该接近以下值:
[ 0.26654135 -0.15218007 -107.79915373]
Run Code Online (Sandbox Code Playgroud)
如何在不使用Scikit-Learn的情况下获得原始数据集的“原始” theta 以便进行绘制?
任何建议将不胜感激。
按照下面的答案:
m
ldr1 731.891429
ldr2 714.080000
servo -21.388571
dtype: float64
s
ldr1 168.392347
ldr2 187.583221
servo 52.904576
dtype: float64
Run Code Online (Sandbox Code Playgroud)
然后,我继续:
original_thetas = np.dot(theta, s) + m
Run Code Online (Sandbox Code Playgroud)
产生:
original_thetas
ldr1 862.420572
ldr2 844.609144
servo 109.140572
dtype: float64
Run Code Online (Sandbox Code Playgroud)
我不确定是否执行错误的计算,或者所提供的方法对系数本身不起作用。
我相信您只需要存储平均值和标准偏差
m = data.mean()
s = data.std()
Run Code Online (Sandbox Code Playgroud)
然后逆变换
theta * s + m
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95 次 |
| 最近记录: |