Почему оценка от LinearRegression дает другой результат, чем r2_score от sklearn.метрики

#python #linear-regression

Вопрос:

В идеале я должен получить тот же результат, так как оценка-это не что иное, как R-квадрат. Но не уверен, почему результаты получаются разными.

 from sklearn.datasets import california_housing
data = california_housing.fetch_california_housing()
data.data.shape
data.feature_names
data.target_names

import pandas as pd
house_data = pd.DataFrame(data.data, columns=data.feature_names)
house_data.describe()
house_data['Price'] = data.target


X = house_data.iloc[:, 0:8].values
y = house_data.iloc[:, -1].values

# Splitting the dataset into the Training set and Test set
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.33, random_state = 0)

# Fitting Simple Linear Regression to the Training set
from sklearn.linear_model import LinearRegression
linear_model = LinearRegression()
linear_model.fit(X_train, y_train)
#Check R-square on training data


from sklearn.metrics import mean_squared_error, r2_score

y_pred = linear_model.predict(X_test)
print(linear_model.score(X_test, y_test))
print(r2_score(y_pred, y_test))
 

Выход

 0.5957643114594776
0.34460597952465033
 

Ответ №1:

из документов: https://scikit-learn.org/stable/modules/generated/sklearn.metrics.r2_score.html

sklearn.metrics.r2_score(y_true, y_pred,…)

Вы передаете y_true и y_pred неверным путем. Если вы переключите их, вы получите правильный результат.

 print(linear_model.score(X_test, y_test))
print(r2_score(y_test, y_pred))

0.5957643114594777
0.5957643114594777