Регрессия PLS с использованием sklearn дает очень плохие результаты прогнозирования. Когда я получаю модель, я не могу найти способ найти «перехват». Возможно, это влияет на предсказание модели? Матрица оценок и загрузок в порядке. Оформление коэффициентов также. В любом случае, как мне получить перехват с использованием уже полученных атрибутов?Как получить перехват PLS-регрессии (sklearn)
Этот код выдает коэффициенты переменных.
from pandas import DataFrame
from sklearn.cross_decomposition import PLSRegression
X = DataFrame({
'x1': [0.0,1.0,2.0,2.0],
'x2': [0.0,0.0,2.0,5.0],
'x3': [1.0,0.0,2.0,4.0],
}, columns = ['x1', 'x2', 'x3'])
Y = DataFrame({
'y': [ -0.2, 1.1, 5.9, 12.3 ],
}, columns = ['y'])
def regPLS1(X,Y):
_COMPS_ = len(X.columns) # all latent variables
model = PLSRegression(_COMPS_).fit(X, Y)
return model.coef_
В результате:
regPLS1(X,Y)
>>> array([[ 0.84], [ 2.44], [-0.46]])
В дополнение к этим коэффициентам, величина перехвата является: 0,26. Что я делаю не так?
РЕДАКТИРОВАТЬ Правильный поставили (оценить) ответ Y_hat (точно так же, наблюдаемая Y):
Y_hat = [-0.2 1.1 5.9 12.3]
Как насчет предсказания '[0, 0, 0, 0]'? – MMF
Я отредактировал свой ответ. Прогнозируемое значение (с использованием 3 VL) в точности соответствует наблюдаемому значению. – JonAnthrax
Использование model.predict (X): – JonAnthrax