Извлечение значения r2 в отрицательном

#python #machine-learning #regression #lightgbm

#python #машинное обучение #регрессия #lightgbm

Вопрос:

У меня есть следующий код, применяющий lightgbm к набору данных (ссылка приведена ниже). Я получаю отрицательный r2 -2.0687981990506565. Ошибка RMSE, которую я извлекаю, очень низкая, однако значение r2 отрицательное. Как он может работать плохо, имея очень низкий MSE для обучающих и тестовых данных.

 weights_data = pd.read_csv("dataset.csv")
columns = weights_data.columns
target = columns[-1:]
features = columns[:-1]
def regressor_model():
  print()
  X = weights_data[features].to_numpy()
  Y = weights_data[target].to_numpy() * 100
  x_train,x_test,y_train,y_test=train_test_split(X,Y, train_size=0.8, random_state = 2021)
  regressor = lightgbm.LGBMRegressor()
  regressor.fit(x_train,y_train)
  y_pred = regressor.predict(x_test)
  r2_score_value=r2_score(y_test,y_pred)
  print(r2_score_value)
  print()
  return regressor
regressor_model()
 

Ссылка для набора данных https://drive.google.com/file/d/1W1G67215vNZpsU1BEiz5S4XO0XwZJhwR/view?usp=sharing

Если порядок параметра r2 изменен, например, как показано ниже, извлекается значение r2, равное 0.0.

 r2_score_value=r2_score(y_pred,y_test)
 

Комментарии:

1. В чем ваш вопрос?

2. @itprorh66, спасибо за ваш ответ. Я обновил свой вопрос.

Ответ №1:

Если вы получаете отрицательный r-квадрат. Это означает, что ваша модель делает случайное предположение. Из приведенного выше кода я предполагаю, что вы используете параметры по умолчанию для LGBMRegressor(). Вам необходимо настроить параметры вашей модели. Изменение параметров, вероятно, может решить вашу проблему.

A вы можете найти аналогичный сценарий здесь