我尝试了两种实现轻型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)
我希望它大致相同,但事实并非如此。据我了解,一个是助推器,另一个是回归器?
答案 0 :(得分:6)
LGBMRegressor
是sklearn的界面。 .fit(X, y)
调用是用于模型训练的标准sklearn语法。它是一个类对象,可以用作sklearn生态系统的一部分(用于运行管道,参数调整等)。
lightgbm.train
是lightgbm本身的核心培训API。
XGBoost和许多其他流行的ML培训库具有类似的区别(例如,核心API使用xgb.train(...)
,而sklearn API使用XGBClassifier
或XGBRegressor
)。