检索负数的 r2 值
Retrieving r2 value in negative
我有以下代码将 lightgbm 应用于数据集(link 在下面共享)。我检索 -2.0687981990506565 的负 r2。我检索到的 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()
Link 数据集 https://drive.google.com/file/d/1W1G67215vNZpsU1BEiz5S4XO0XwZJhwR/view?usp=sharing
如果 r2 参数的顺序发生变化,例如如下所示,将检索到 r2 值 0.0。
r2_score_value=r2_score(y_pred,y_test)
如果你得到负 r 方。这意味着您的模型正在随机猜测。从上面的代码我猜你正在使用 LGBMRegressor() 的默认参数。您需要调整模型的参数。调整参数可能会解决您的问题。
你可以找到类似的场景here
我有以下代码将 lightgbm 应用于数据集(link 在下面共享)。我检索 -2.0687981990506565 的负 r2。我检索到的 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()
Link 数据集 https://drive.google.com/file/d/1W1G67215vNZpsU1BEiz5S4XO0XwZJhwR/view?usp=sharing
如果 r2 参数的顺序发生变化,例如如下所示,将检索到 r2 值 0.0。
r2_score_value=r2_score(y_pred,y_test)
如果你得到负 r 方。这意味着您的模型正在随机猜测。从上面的代码我猜你正在使用 LGBMRegressor() 的默认参数。您需要调整模型的参数。调整参数可能会解决您的问题。
你可以找到类似的场景here