Кажется, что вы инвертируете аргументы в функции r2_score. Это должно быть r2_score(y_true, y_pred)
Вот мой код:
import numpy as np
from sklearn.preprocessing import PolynomialFeatures
from sklearn.metrics.regression import r2_score
from sklearn.linear_model import LinearRegression
from sklearn.model_selection import train_test_split
def fit_poly(deg):
poly = PolynomialFeatures(deg)
model = LinearRegression()
X_poly = poly.fit_transform(X_train.reshape(-1, 1))
model.fit(X_poly, y_train)
y_pred_train = model.predict(poly.fit_transform(X_train.reshape(-1, 1)))
r2_train = r2_score(y_train, y_pred_train)
y_pred_test = model.predict(poly.transform(X_test.reshape(-1, 1)))
r2_test = r2_score(y_test, y_pred_test)
return r2_train, r2_test
np.random.seed(0)
n = 15
x = np.linspace(0,10,n) + np.random.randn(n)/5
y = np.sin(x)+x/6 + np.random.randn(n)/10
X_train, X_test, y_train, y_test = train_test_split(x, y, random_state=0)
lst=[]
lsts=[]
for x in range(0,10,1):
lst.append(fit_poly(x)[0])
lsts.append(fit_poly(x)[1])
print(lst, lsts)
и результаты:
[0,0, 0,4292457781234663, 0,45109980444082465, 0,5871995368779847, 0,91941944717694 , +0,97578641430682, +0,9901823324795082, +0,9935250927840416, 0,996375453877599, 0,9980370625664945]
[- 0,4780864173714179, -0,45237104233936676, -0,0685698414991589, +0,005331052945740433, +0,7300494281871148, +0,8770830091614791, +0,9214093981415002, +0,9202150411139083, +0,6324795282222648, -0,645253216177847]
* * * 1 013 1014 * С вашим кодом значения были когда-то выше 1.
Кстати, ваша новая версия кода более понятна, как вы можете видеть, я скопировал многие из них:)