mars.learn.contrib.lightgbm.LGBMClassifier#
- class mars.learn.contrib.lightgbm.LGBMClassifier(*args, **kwargs)[来源]#
- __init__(*args, **kwargs)#
构建一个梯度提升模型。
- Parameters
boosting_type (str, 可选 (默认='gbdt')) – ‘gbdt’,传统的梯度提升决策树。 ‘dart’,Dropouts meets Multiple Additive Regression Trees(DART)。 ‘rf’,随机森林。
num_leaves (int, 可选 (默认=31)) – 基学习器的最大树叶数量。
max_depth (int, 可选 (默认=-1)) – 基学习者的最大树深度, <=0 表示没有限制。
learning_rate (float, 可选 (默认=0.1)) – 提升学习率。 您可以使用
callbacks参数的fit方法在训练中使用reset_parameter回调来缩小/调整学习率。 注意,这将忽略训练中的learning_rate参数。n_estimators (int, 可选 (默认=100)) – 要拟合的增强树的数量。
subsample_for_bin (int, 可选的 (默认=200000)) – 用于构建桶的样本数量。
目标 (str, 可调用或None, 可选 (默认=None)) – 指定学习任务及相应的学习目标或要使用的自定义目标函数(见下文说明)。默认值:LGBMRegressor 的 ‘回归’,LGBMClassifier 的 ‘二分类’ 或 ‘多分类’,LGBMRanker 的 ‘lambdarank’。
class_weight (dict, 'balanced' 或 None, 可选 (默认=None)) – 与类别相关的权重形式
{class_label: weight}。仅在多类分类任务中使用此参数;对于二元分类任务,您可以使用is_unbalance或scale_pos_weight参数。请注意,使用所有这些参数将导致个别类别概率的估计不准确。您可能希望考虑对您的模型进行概率校准 (https://scikit-learn.org/stable/modules/calibration.html)。‘balanced’模式使用 y 的值自动调整权重,与输入数据中的类别频率成反比,如n_samples / (n_classes * np.bincount(y))。如果为 None,则所有类别的权重都假定为一。请注意,如果指定了sample_weight(通过fit方法传递),则这些权重将与sample_weight相乘。min_split_gain (float, 可选 (默认=0.)) – 进行进一步分割树的叶子节点所需的最小损失减少。
min_child_weight (float, 可选 (默认=1e-3)) – 子节点(叶子)的实例权重(Hessian)所需的最小总和。
min_child_samples (int, 可选 (默认=20)) – 一个子节点(叶子)中所需的最小数据数量。
subsample (float, 可选 (默认=1.)) – 训练实例的子采样比例.
subsample_freq (int, 可选 (默认=0)) – 子样本的频率, <=0 表示不启用。
colsample_bytree (float, 可选 (默认=1.)) – 在构建每棵树时的列子采样比例。
reg_alpha (float, 可选 (默认=0.)) – 权重的L1正则化项。
reg_lambda (float, 可选 (默认=0.)) – 权重的L2正则化项。
random_state (int, RandomState 对象 或 None, 可选 (默认=None)) – 随机数种子。
如果是整数,该数字用于初始化 C++ 代码。
如果是 RandomState 对象(numpy),则根据其状态选择一个随机整数用于初始化 C++ 代码。
如果 None,则使用 C++ 代码中的默认种子。n_jobs (int 或 None, 可选 (默认=None)) –
用于训练的并行线程数(可以在预测时通过将其作为额外关键字参数传递进行更改)。
为了更好的性能,建议将其设置为CPU中的物理核心数。
负整数被解释为遵循joblib的公式(n_cpus + 1 + n_jobs),就像scikit-learn一样(例如,-1表示使用所有线程)。值零对应于系统中为OpenMP配置的默认线程数。值为
None(默认)对应于使用系统中的物理核心数(其正确检测需要安装joblib或psutil实用程序库)。此版本在4.0.0中更改。
importance_type (str, 可选 (默认='split')) – 要填充到
feature_importances_的特征重要性的类型。 如果是‘split’,结果包含特征在模型中使用的次数。 如果是‘gain’,结果包含使用该特征的分裂的总增益。**kwargs –
模型的其他参数。 查看 http://lightgbm.readthedocs.io/en/latest/Parameters.html 以获取更多参数。
警告
**kwargs 在 sklearn 中不受支持,可能导致意外问题。
注意
可以为
objective参数提供自定义目标函数。在这种情况下,它应该具有以下签名objective(y_true, y_pred) -> grad, hess,objective(y_true, y_pred, weight) -> grad, hess或objective(y_true, y_pred, weight, group) -> grad, hess:- y_truenumpy 1-D array of shape = [n_samples]
目标值。
- y_prednumpy 1-D array of shape = [n_samples] or numpy 2-D array of shape = [n_samples, n_classes] (for multi-class task)
预测值。 预测值是在任何转换之前返回的, 例如,它们是原始边际而不是二元任务的正类概率。
- weightnumpy 1-D array of shape = [n_samples]
样本的权重。权重应为非负值。
- groupnumpy 1-D array
组/查询数据。 仅在学习排序任务中使用。 sum(group) = n_samples。 例如,如果您有一个包含100个文档的数据集,
group = [10, 20, 40, 10, 10, 10],这意味着您有6个组, 第一个组包含前10条记录,第二个组包含第11-30条记录,第三个组包含第31-70条记录,等等。- gradnumpy 1-D array of shape = [n_samples] or numpy 2-D array of shape = [n_samples, n_classes] (for multi-class task)
损失相对于每个样本点的y_pred元素的一阶导数(梯度)的值。
- hessnumpy 1-D array of shape = [n_samples] or numpy 2-D array of shape = [n_samples, n_classes] (for multi-class task)
每个样本点的损失关于y_pred元素的二阶导数(Hessian)的值。
对于多类任务,y_pred 是一个形状为 [n_samples, n_classes] 的 numpy 2-D 数组,grad 和 hess 应以相同的格式返回。
方法
__init__(*args, **kwargs)构建一个梯度提升模型。
fit(X, y[, sample_weight, init_score, ...])根据训练集 (X, y) 构建一个梯度提升模型。
get_params([deep])获取该估计器的参数。
load_model(model)predict(X, **kwargs)返回每个样本的预测值。
predict_proba(X, **kwargs)返回每个样本每个类别的预测概率。
score(X, y[, sample_weight])返回给定测试数据和标签的平均准确性。
set_params(**params)设置此估计器的参数。
to_local()属性
best_iteration_如果指定了
early_stopping()回调,则这是拟合模型的最佳迭代。best_score_拟合模型的最佳分数。
booster_该模型的基础增强器。
classes_类别标签数组。
evals_result_如果指定了验证集,则评估结果。
feature_importances_特征的重要性(越高越重要)。
feature_name_功能的名称。
n_classes_类的数量。
n_estimators_执行的增强迭代的真实数量。
n_features_拟合模型的特征数量。
n_features_in_拟合模型的特征数量。
n_iter_执行的增强迭代的真实数量。
objective_在拟合该模型时使用的具体目标。