Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.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预测相同的值_Python_Python 3.x_Machine Learning - Fatal编程技术网

Python lightGBM预测相同的值

Python lightGBM预测相同的值,python,python-3.x,machine-learning,Python,Python 3.x,Machine Learning,我有一个关于lgb的问题。当我写作时 lgb.train(.......) 它在不到毫秒的时间内完成。(对于(10000,25))形状数据集 当我写predict时,所有的输出变量都有相同的值 train = pd.read_csv('data/train.csv', dtype = dtypes) test = pd.read_csv('data/test.csv') test.head() X = train.iloc[:10000, 3:-1].values y = train.il

我有一个关于lgb的问题。当我写作时

lgb.train(.......)
它在不到毫秒的时间内完成。(对于(10000,25))形状数据集

当我写predict时,所有的输出变量都有相同的值

train = pd.read_csv('data/train.csv', dtype = dtypes)
test = pd.read_csv('data/test.csv')

test.head()

X = train.iloc[:10000, 3:-1].values
y = train.iloc[:10000, -1].values

sc = StandardScaler()
X = sc.fit_transform(X)

#pca = PCA(0.95)
#X = pca.fit_transform(X)

d_train = lgb.Dataset(X, label=y)
params = {}
params['learning_rate'] = 0.003
params['boosting_type'] = 'gbdt'
params['objective'] = 'binary'
params['metric'] = 'binary_logloss'
params['sub_feature'] = 0.5
params['num_leaves'] = 10
params['min_data'] = 50
params['max_depth'] = 10

num_round = 10
clf = lgb.train(params, d_train, num_round, verbose_eval=1000)

X_test = sc.transform(test.iloc[:100,3:].values)

pred = clf.predict(X_test,  num_iteration = clf.best_iteration)
打印pred时,所有值均为(0.49)


这是我第一次使用lightgbm模块。代码中有错误吗?或者我应该查找数据集中的一些不匹配

你的num_轮太小,它刚开始学习,然后停在那里。除此之外,让你的详细评估更小,以便在培训后直观地看到结果。我建议您尝试以下lgb.train代码:

clf=lgb.train(参数、d列、数量提升轮=5000、详细评估轮=10、提前停车轮=3500)

始终使用提前停止\u轮,因为如果没有明显的学习或模型开始过度拟合,模型应该停止


不要犹豫,多问一些。玩得开心。

谢谢你的回答,我正在尝试这种方法。要提前停止,需要验证集。我设法添加了它,但现在我收到了错误类型错误:train()为参数'num\u boost\u round'获取了多个值,我正在尝试解决它。num\u boost\u round'应该与'num\u round'相同,这可能是错误的原因。下面是我的一段代码,用于解决您的验证集问题:myLGB=lgb.train(params,d_train,valid_sets=[d_train,d_test],num_boost_round=4000,verbose_eval=10,early_stop_rounds=2750)很抱歉回复晚了。是的,这是我的错误,我改正了。谢谢。