Я пытаюсь выполнить интерполяцию с использованием класса LineaerRegression в Scikit learn, но результат кажется неправильным. Идея состоит в том, чтобы использовать полиномиальное соответствие со степенью, равной количеству наблюдений минус один. Это должно заставить оценщик linearRegression произвести интерполяцию. Однако LinearRegression не дает интерполяционного решения.
Полный код:
import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
# Data
x = np.array([65.44, 65.99, 65.16, 66.24, 66.85, 66.78, 67.52, 65.1 , 62.72,
63.53, 63.62, 64.23, 64.89, 64.3 , 66.41])
y = np.array([8.5503, 8.5596, 8.4819, 8.505 , 8.5137, 8.5174, 8.5183, 8.5336,
8.5581, 8.5534, 8.531 , 8.5546, 8.6349, 8.6553, 8.639 ])
# Design matrix with polynomial degree corresponding to the number of points (interpolation)
polyEstimator = PolynomialFeatures(len(x) - 1)
XHat = polyEstimator.fit_transform(x.reshape(-1, 1))
# Regression
linReg = LinearRegression(fit_intercept=False) #normalize=True,
linRegFit = linReg.fit(XHat, y)
yPredict = linRegFit.predict(XHat)
plt.figure()
plt.plot(x, yPredict, label='Fit')
plt.plot(x, y, 'x', label='True')
plt.legend()
Я пробовал с normalize = True, но также, что не дал правильный ответ .