Я читаю данные из файла, используя 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]]
Я бы хотел построить плоскость наилучшего соответствия исходным данным, а не нормализованным данным , используя нормализованные тэты.
Я использовал scipy.optimize.curve_fit
для выполнения многомерной линейной регрессии и придумал оптимально подобранные параметры. Я знаю, что оригинальные тэты должны быть близки к следующему:
[ 0.26654135 -0.15218007 -107.79915373]
Как я могу получить «оригинальные» тэты для исходного набора данных для построения графика, без , используя Scikit-Learn?
Будут оценены любые предложения.
Согласно ответу ниже:
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
Я не уверен, правильно ли я выполняю вычисления или представленный метод не работает для самих коэффициентов.