#python #pandas #numpy #scikit-learn #linear-regression
#python #pandas #numpy #scikit-учиться #линейная регрессия
Вопрос:
Мне нужно выполнить следующие вычисления.
- Данный фрейм данных Nx1 pandas
- Преобразование фрейма данных в матрицу Numpy (это будет переменная Y регрессии)
- Преобразование сдвинутого (на 1) фрейма данных в матрицу Numpy (это будет переменная X регрессии)
- Выполнение простой линейной регрессии между X и Y
- Используя коэффициент линейной регрессии (массив 1×1), вычислите новую матрицу Numpy Nx1 как
(1/1-coefficient)*(Y.T) - (coefficient/1-coefficient)*(X.T)
- Преобразуйте результат в фрейм данных pandas Nx1
Пожалуйста, рассмотрите следующий код:
def function(data):
Y = np.nan_to_num(np.asmatrix(data)).T
X = np.nan_to_num(np.asmatrix(data.shift(1))).T
M = lm.LinearRegression().fit(X, Y)
result = (np.dot((1/1-M.coef_), Y.T)) - (np.dot(M.coef_ / 1-M.coef_, X.T))
return pd.DataFrame(result.T, columns = data.columns, index = data.index)
Как я могу эффективно выполнить (было бы намного лучше избежать for
цикла) тот же процесс, когда данный фрейм данных pandas равен NxM? В этом случае массив коэффициентов регрессии будет равен 1xM, причем каждый столбец представляет собой коэффициент между i-столбцом X и i-столбцом Y.