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

lgb.train(.......)


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

当我编写预测时,所有输出变量都具有相同的值。

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_round太小,它开始学习并在此处停止。除此之外,请使您的verbose_eval较小,以便在训练时直观地看到结果。我建议您尝试如下的lgb.train代码:

clf = lgb.train(params,d_train,num_boost_round = 5000,verbose_eval = 10,early_stopping_rounds = 3500)

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

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

关于python - lightGBM预测相同的值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52802011/

10-12 19:56