У меня есть функция полиномиальных признаков, которую я хочу дать степень (1/2) или 0,5, потому что используемый набор данных представляет собой нисходящее плато со степенью не более (1/2), однако прогнозы даютвсе одинаковы, а среднее значение r-квадрата равно -23736.436220427375.Когда степень изменяется на 2 и далее, прогнозы увеличиваются по мере того, как значения X выходят за середину, что приводит к параболе, где данные не являются параболой.
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
df = pd.read_csv('infantmortality.csv',sep=',')
x = df['Year']
y = df['Infant Mortality Rate']
x_Train = np.array(x[96:150]).reshape(-1, 1)
y_Train = y[96:150]
x_Test = np.array(x[150:193]).reshape(-1, 1)
y_Test = x[150:193]
poly = PolynomialFeatures(degree=int(2))
X_ = poly.fit_transform(x_Train)
x_test_ = poly.fit_transform(x_Test)
lg = LinearRegression(fit_intercept=False, normalize=True)
lg.fit(X_, y_Train)
score = lg.score(x_test_, y_Test)
val = [2005]
val_ = poly.fit_transform(np.array(val).reshape(-1, 1))
print lg.predict(val_)