我尝试了两种实现Light GBM的方法。期望它们返回相同的值,但实际上并没有。
我认为lgb.LightGBMRegressor()
和lgb.train(train_data, test_data)
应该返回相同的准确性,但事实并非如此。所以我想知道为什么?
用于分割数据的函数
def dataready(train, test, predictvar):
included_features = train.columns
y_test = test[predictvar].values
y_train = train[predictvar].ravel()
train = train.drop([predictvar], axis = 1)
test = test.drop([predictvar], axis = 1)
x_train = train.values
x_test = test.values
return x_train, y_train, x_test, y_test, train
这是我如何分解数据
x_train, y_train, x_test, y_test, train2 = dataready(train, test, 'runtime.min')
train_data = lgb.Dataset(x_train, label=y_train)
test_data = lgb.Dataset(x_test, label=y_test)
预测模型
lgb1 = LMGBRegressor()
lgb1.fit(x_train, y_train)
lgb = lgb.train(parameters,train_data,valid_sets=test_data,num_boost_round=5000,early_stopping_rounds=100)
我希望它大致相同,但实际上并不是。据我所知,一个是增强器,另一个是回归器?
fit
只是sklearn api中light gbm使用的方法(使light gbm可在为sklearn构建的库中使用),而train
是lightgbm的本地方法。因此,差异可能仅由不同的默认值引起。 - jottbe