Реализация линейной регрессии с несколькими переменными с использованием функций полинома (степень = 1) и простой линейной регрессии дает 2 разных результата
Я пытаюсь закодировать задачу множественной линейной регрессии двумя разными методами. Один из них самый простой, как указано ниже:
from sklearn.model_selection import train_test_split
X = df[['geo','age','v_age']]
y = df['freq']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)
# Fitting model
regr2 = linear_model.LinearRegression()
regr2.fit(X_train, y_train)
print(metrics.mean_squared_error(ypred,y_test))
print(r2_score(y_test,ypred))
Приведенный выше код дает мне MSE 0,46 и оценку Y2 0,0012, что действительно плохо. Между тем, когда я использую:
from sklearn.preprocessing import PolynomialFeatures
poly = PolynomialFeatures(degree=1) #Degree = 1 should give the same equation as above code block
X_ = poly.fit_transform(X)
y = y.values.reshape(-1, 1)
predict_ = poly.fit_transform(y)
X_train, X_test, y_train, y_test = train_test_split(X_, predict_, test_size=0.33, random_state=42)
# Fitting model
regr2 = linear_model.LinearRegression()
regr2.fit(X_train, y_train)
print(metrics.mean_squared_error(ypred,y_test))
print(r2_score(y_test,ypred))
Использование PolynomialFeatures дает мне MSE 0,23 и оценку Y2 0,5, что намного лучше. Я не понимаю, как два метода, использующие одно и то же уравнение регрессии, дают такие разные ответы. Остальное все остальное то же самое.