Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么LightGBM的R2分数为零?_Python_Lightgbm - Fatal编程技术网

Python 为什么LightGBM的R2分数为零?

Python 为什么LightGBM的R2分数为零?,python,lightgbm,Python,Lightgbm,R2得分为零,那么为什么在LGBM回归器中获得零值呢? 我没有分割我的数据序列测试,因为我的数据集很小。由于未包含“Prali Marble.xlsx”的内容,因此此示例不完全可复制 但是,我可以用下面的代码重现一个0.0 R2,我认为它与您的示例非常匹配。与您的代码类似,这在具有单个特征的数据集上训练LightGBM回归模型 此代码在Python 3.8上使用lightgbm3.1.1 将numpy导入为np 作为pd进口熊猫 将lightgbm作为lgb导入 从sklearn.metrics

R2得分为零,那么为什么在LGBM回归器中获得零值呢?
我没有分割我的数据序列测试,因为我的数据集很小。

由于未包含
“Prali Marble.xlsx”
的内容,因此此示例不完全可复制

但是,我可以用下面的代码重现一个0.0 R2,我认为它与您的示例非常匹配。与您的代码类似,这在具有单个特征的数据集上训练LightGBM回归模型

此代码在Python 3.8上使用
lightgbm
3.1.1

将numpy导入为np
作为pd进口熊猫
将lightgbm作为lgb导入
从sklearn.metrics导入r2_分数,均方误差为MSE
X=pd.DataFrame({
“feat1”:np.append(np.repeat(0.599),np.one(1))
})
Y=np.随机.随机(100,)
lgb_r=lgb.LGBMRegressor()
lgb_r.配合(X,Y)
y_pred=lgb_r.predict(X)
打印(“LGBM R2_分数:”,R2_分数(Y,lgb_r.预测(X)))
LGBM R2_分数:0.0

在这种情况下,R2为0,因为模型只是预测
Y
的平均值。通过检查模型的结构可以看到这一点

lgb_r.booster_.trees_to_dataframe()
这将返回一行数据帧,这发生在LightGBM不添加任何树时

LightGBM具有一些用于防止过度装配的参数。这里有两个相关问题:

  • (默认值=20)
  • (默认值=0.001)
通过将这些参数设置为0,可以告诉LightGBM忽略这些过盈保护

将numpy导入为np
作为pd进口熊猫
将lightgbm作为lgb导入
从sklearn.metrics导入r2_分数
X=pd.DataFrame({
“feat1”:np.append(np.repeat(0.599),np.one(1))
})
Y=np.随机.随机(100,)
lgb_r=lgb.lgbm回归器(
叶子中的最小数据=0,
叶中的最小和=0.0
)
lgb_r.配合(X,Y)
y_pred=lgb_r.predict(X)
打印(“LGBM R2_分数:”,R2_分数(Y,lgb_r.预测(X)))

谢谢你的回复。嗨@JamesLamb,谢谢你,伙计!!我已经试过了,我得到了R2_分数:0.78很多感谢,很高兴它有帮助!
import numpy as np
import pandas as pd
import lightgbm
from sklearn.metrics import r2_score,mean_squared_error as MSE
dataset = pd.read_excel("Prali Marble.xlsx")
X = dataset.iloc[:,2].values.reshape((-1, 1))
Y = dataset.iloc[:,3].values

from lightgbm import LGBMRegressor
lgb_r = LGBMRegressor()
lgb_r.fit(X,Y)
y_pred = lgb_r.predict(X)
print("LGBM R2_SCORE:", r2_score(Y, lgb_r.predict(X)))