1. lightgbm.train
lightgbm.train(params, train_set, num_boost_round=100, valid_sets=None, valid_names=None,
fobj=None, feval=None, init_model=None, feature_name='auto', categorical_feature='auto',
keep_training_booster=False, callbacks=None)
- params ( dict ) – 训练参数。# 超参数设置
- train_set ( Dataset ) – 要训练的数据。# 训练数据
- num_boost_round ( int , optional ( default=100 ) ) – 提升迭代次数。# 循环的轮数
- valid_sets ( list of Dataset , or None , optional ( default=None ) ) – 训练期间要评估的数据列表。# 验证数据
- valid_names(str 列表,或None ,可选(默认=None ))- 的名称valid_sets。# 验证集名称
- early_stopping_rounds=200,# 如果200轮后没有提升,就停止循环
返回的是一个训练好的Booster模型 2.操作: 用于训练你的模型,返回的是一个训练好的Booster模型
2.返回 lightgbm.Booster
classlightgbm.Booster(params=None, train_set=None, model_file=None, model_str=None)
params ( dict or None , optional ( default=None ) ) – Booster 的参数。
train_set ( Dataset or None , optional ( default=None ) ) – 训练数据集。
model_file ( str , pathlib.Path or None , optional ( default=None ) ) – 模型文件的路径。
model_str ( str or None , optional ( default=None ) ) – 模型将从该字符串加载
methods
1、
feature_importance(importance_type='split', iteration=None)
Get feature importances.(获取特征重要性) Parameters
importance_type (str, optional (default=“split”)) – 如何计算重要性。如果“拆分”,则结果包含该特征在模型中使用的次数。如果“增益”,结果包含使用该特征的分割的总增益。
iteration (int or None, optional (default=None)) –限制特征重要性计算中的迭代次数。如果None,如果存在最好的迭代,则使用它;否则,将使用所有树。如果 <= 0,则使用所有树(无限制)。
Returns:result – Array with feature importances.(结果- 具有特征重要性的数组) Return type:numpy 数组 (numpy array)
2、
predict(data, start_iteration=0, num_iteration=None, raw_score=False, pred_leaf=False, pred_contrib=False,
data_has_header=False, is_reshape=True, **kwargs)
data:用于预测的数据源。如果是 str 或 pathlib.Path,它表示文本文件(CSV、TSV 或 LibSVM)的路径。 Returns:结果- 预测结果。对于特征贡献(何时),可以是稀疏对象或稀疏对象列表(每个元素代表一个类的预测pred_contrib=True)。 numpy 数组、scipy.sparse 或 scipy.sparse 列表
代码
params = {'num_leaves': 491,
'min_data_in_leaf': 106,
'objective': 'binary',
'max_depth': -1,
"boosting_type": "gbdt",
"metric": 'auc',
"verbosity" : -1,
'random_state': 66,
}
params = {'num_leaves': 491,
'min_data_in_leaf': 106,
'objective': 'binary',
'max_depth': -1,
"boosting_type": "gbdt",
"metric": 'auc',
"verbosity" : -1,
'random_state': 66,
}
feature_importances = pd.DataFrame(index=None)
feature_importances['features'] = X.columns
folds = KFold(n_splits=5)
splits = folds.split(X, y)
next(iter(splits))
best_auc = 0
best_model = None
for k, (train_indices, val_indices) in enumerate(splits):
print("第 %d 折\n" % k)
X_train_data, X_val_data = X.iloc[train_indices], X.iloc[val_indices]
y_train, y_val = y.iloc[train_indices], y.iloc[val_indices]
train_dataset = lgb.Dataset(X_train_data, label=y_train)
val_dataset = lgb.Dataset(X_val_data, label=y_val)
lgb_model = lgb.train(params=params,
train_set=train_dataset,
num_boost_round=10000,
valid_sets=val_dataset,
valid_names='validation',
early_stopping_rounds=200,)
feature_importances[f'fold_{k+1}'] = lgb_model.feature_importance()
y_val_pred = lgb_model.predict(X_val_data)
roc_auc = roc_auc_score(y_val, y_val_pred)
print(f" Fold {k + 1} | AUC_ROC : { roc_auc * 100}%")
if roc_auc > best_auc:
best_auc = roc_auc
best_model = lgb_model
|