Boosting
hscredit.core.models.boosting 提供基于梯度提升框架的风控模型,统一继承
BaseRiskModel,需要安装对应可选依赖
(pip install hscredit[boost])。可直接从顶层 hscredit 懒加载导入,例如
from hscredit import XGBoost。
备注
NGBoost 依赖 ngboost;构建本文档时若未安装该依赖,相关签名以
mock 形式呈现,不影响接口说明。
- class hscredit.core.models.boosting.xgboost_model.XGBoost(max_depth=6, learning_rate=0.1, n_estimators=100, min_child_weight=1, subsample=0.8, colsample_bytree=0.8, colsample_bylevel=1.0, reg_alpha=0, reg_lambda=1, scale_pos_weight='auto', gamma=0, max_delta_step=0, tree_method='hist', objective='binary:logistic', eval_metric=None, early_stopping_rounds=None, early_stopping_metric=None, early_stopping_data=None, validation_fraction=0.2, random_state=None, n_jobs=-1, verbose=False, params=None, scorecard_params=None, **kwargs)[源代码]
-
XGBoost风控模型 - 基于内部建模经验优化.
基于XGBoost的二分类模型,针对风控场景优化。 参考内部建模经验,支持自动scale_pos_weight计算、KS评估指标等。
参数
- 参数:
max_depth (int) -- 树最大深度,默认6 - 内部经验: 特征>1000时建议5-13,否则3-9
learning_rate (float) -- 学习率,默认0.1 - 内部经验: 一般0.01-0.3,常用0.1
n_estimators (int) -- 树的数量,默认100 - 内部经验: 样本>10000时50-300,否则20-100
min_child_weight (float) -- 叶子节点最小样本权重和,默认1 - 内部经验: 样本>10000时10-2000,否则10-300
subsample (float) -- 样本采样比例,默认0.8 - 内部经验: 常用0.6-0.9防止过拟合
colsample_bytree (float) -- 特征采样比例,默认0.8 - 内部经验: 常用0.6-0.9防止过拟合
colsample_bylevel (float) -- 每层的特征采样比例,默认1.0
reg_alpha (float) -- L1正则化系数,默认0 - 内部经验: 常用0, 0.01, 0.1, 1, 10, 100
reg_lambda (float) -- L2正则化系数,默认1
scale_pos_weight (str | float) -- 正负样本权重比,默认'auto' - 'auto': 自动计算 (当bad_rate<0.05时) - float: 自定义权重 - 内部经验: 当bad_rate<0.05时设置0.05 * n_samples / n_positive
gamma (float) -- 节点分裂所需的最小损失减少,默认0
max_delta_step (float) -- 每棵树权重改变的最大步长,默认0
tree_method (str) -- 树构建算法,默认'hist' - 'hist': 直方图算法(推荐,速度快) - 'exact': 精确贪心算法 - 'approx': 近似算法 - 'gpu_hist': GPU直方图算法
objective (str) -- 目标函数,默认'binary:logistic'
eval_metric (str | List[str] | None) -- 评估指标,可选列表 - 支持'ks'作为自定义评估指标(风控常用) - 多个指标时,默认使用第一个指标进行早停
early_stopping_rounds (int | None) -- 早停轮数,默认None - 连续N轮没有改善则停止训练 - XGBoost 2.0+ 需要在构造函数中传入此参数
early_stopping_metric (str | None) -- 用于早停的评估指标名称,默认None(使用第一个指标) - 当eval_metric有多个时,指定用哪个指标进行早停判断 - XGBoost 2.0+ 使用方式: 传入metric名称,如 'auc', 'logloss', 'error' - 注意: 指标名称必须是eval_metric中指定的名称之一 - 例如: eval_metric=['auc','logloss']时,可指定'auc'或'logloss'作为早停指标
early_stopping_data (str | None) -- 用于早停的验证集名称,默认None(使用第一个验证集) - XGBoost内部会自动命名为'validation_0', 'validation_1'等 - 通常不需要指定,除非有多个验证集
validation_fraction (float) -- 验证集比例,默认0.2
random_state (int | None) -- 随机种子,默认None
n_jobs (int) -- 并行任务数,默认-1
verbose (bool) -- 是否输出详细信息,默认False
params (Dict[str, Any] | None) -- XGBoost原生参数字典,默认None - 如果传入,将覆盖其他参数设置 - 可直接使用XGBoost原生参数名
kwargs -- 其他XGBoost参数
scorecard_params (Dict[str, Any] | None)
属性
- 变量:
feature_importances_ -- 特征重要性
evals_result_ -- 训练过程评估结果
best_iteration_ -- 最佳迭代次数
best_score_ -- 最佳得分
scale_pos_weight_ -- 实际使用的scale_pos_weight值
booster_ -- 底层XGBoost模型
- 参数:
max_depth (int)
learning_rate (float)
n_estimators (int)
min_child_weight (float)
subsample (float)
colsample_bytree (float)
colsample_bylevel (float)
reg_alpha (float)
reg_lambda (float)
scale_pos_weight (str | float)
gamma (float)
max_delta_step (float)
tree_method (str)
objective (str)
eval_metric (str | List[str] | None)
early_stopping_rounds (int | None)
early_stopping_metric (str | None)
early_stopping_data (str | None)
validation_fraction (float)
random_state (int | None)
n_jobs (int)
verbose (bool)
params (Dict[str, Any] | None)
scorecard_params (Dict[str, Any] | None)
参考样例
>>> # 基础使用 >>> model = XGBoost(max_depth=5, learning_rate=0.1) >>> model.fit(X_train, y_train)
>>> # 自动处理不平衡数据 >>> model = XGBoost(scale_pos_weight='auto') >>> model.fit(X_train, y_train)
>>> # 使用KS作为评估指标 >>> model = XGBoost(eval_metric='ks') >>> model.fit(X_train, y_train)
>>> # 使用原生XGBoost参数 >>> params = {'max_depth': 5, 'learning_rate': 0.05, 'subsample': 0.8} >>> model = XGBoost(params=params) >>> model.fit(X_train, y_train)
>>> # 早停设置 - 使用多个评估指标,指定logloss作为早停指标(越小越好) >>> model = XGBoost( ... n_estimators=1000, ... eval_metric=['auc', 'logloss'], ... early_stopping_rounds=10, ... early_stopping_metric='logloss' ... ) >>> model.fit(X_train, y_train) >>> print(f'最佳迭代次数: {model.best_iteration_}')
>>> # 早停设置 - 使用AUC作为早停指标(越大越好) >>> model = XGBoost( ... n_estimators=1000, ... eval_metric=['auc', 'logloss'], ... early_stopping_rounds=10, ... early_stopping_metric='auc' ... ) >>> model.fit(X_train, y_train)
引用
基于 XGBoost 梯度提升框架,见 Chen, T. & Guestrin, C. (2016). XGBoost: A Scalable Tree Boosting System. KDD; 文档 https://xgboost.readthedocs.io/ 。
- fit(X, y=None, sample_weight=None, eval_set=None, **fit_params)[源代码]
训练XGBoost模型.
支持两种调用方式: 1. 常规方式: fit(X, y) 2. scorecardpipeline风格: fit(X) 在init中指定target
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
y (ndarray | Series | None) -- 目标变量,可选
sample_weight (ndarray | None) -- 样本权重
eval_set (List[Tuple] | None) -- 验证集列表
fit_params -- 其他fit参数
- 返回:
self
- 返回类型:
- property best_iteration_
最佳迭代次数.
- property best_score_
最佳得分.
- predict(X)[源代码]
预测类别标签.
支持传入包含target列的数据框(scorecardpipeline风格)。 基于 predict_proba 取阈值,确保自定义损失(原始分数输出)下也能返回正确类别。
- 参数:
X (ndarray | DataFrame)
- 返回类型:
ndarray
- predict_proba(X)[源代码]
预测概率.
支持传入包含target列的数据框(scorecardpipeline风格)。
当使用自定义损失函数(objective 为可调用对象)时,XGBoost 返回的是 未经过链接函数转换的原始分数(raw margin,一维数组),此处自动应用 sigmoid 转换为概率并补齐为二维 (n_samples, 2) 输出,与内置目标保持一致。
- 参数:
X (ndarray | DataFrame)
- 返回类型:
ndarray
- get_feature_importances(importance_type='gain')[源代码]
获取特征重要性.
- 参数:
importance_type (str) -- 重要性类型,可选: - 'gain': 平均增益 (默认) - 'weight': 分裂次数 - 'cover': 平均覆盖度 - 'total_gain': 总增益 - 'total_cover': 总覆盖度
- 返回:
特征重要性Series
- 返回类型:
Series
- property feature_importances_: ndarray
特征重要性属性 (兼容sklearn风格).
直接在包装类上暴露重要性,兼容sklearn RFE/SFS等组件的 importance_getter。
- plot_importance(max_num_features=10, **kwargs)[源代码]
绘制特征重要性.
- 参数:
max_num_features (int) -- 显示的最大特征数
kwargs -- 其他绘图参数
- class hscredit.core.models.boosting.lightgbm_model.LightGBM(num_leaves=31, max_depth=-1, learning_rate=0.1, n_estimators=100, min_child_samples=20, min_child_weight=0.001, subsample=1.0, colsample_bytree=1.0, reg_alpha=0, reg_lambda=0, scale_pos_weight=1, min_split_gain=0, boosting_type='gbdt', objective='binary', eval_metric=None, early_stopping_rounds=None, early_stopping_metric=None, first_metric_only=True, validation_fraction=0.2, random_state=None, n_jobs=-1, verbose=False, params=None, scorecard_params=None, **kwargs)[源代码]
-
LightGBM风控模型.
基于LightGBM的二分类模型,针对风控场景优化。 LightGBM相比XGBoost训练更快,内存占用更少。
参数
- 参数:
num_leaves (int) -- 叶子节点数,默认31
max_depth (int) -- 树最大深度,默认-1(无限制)
learning_rate (float) -- 学习率,默认0.1
n_estimators (int) -- 树的数量,默认100
min_child_samples (int) -- 叶子节点最小样本数,默认20
min_child_weight (float) -- 叶子节点最小权重和,默认1e-3
subsample (float) -- 样本采样比例,默认1.0
colsample_bytree (float) -- 特征采样比例,默认1.0
reg_alpha (float) -- L1正则化系数,默认0
reg_lambda (float) -- L2正则化系数,默认0
scale_pos_weight (float) -- 正负样本权重比,默认1
min_split_gain (float) -- 节点分裂所需的最小增益,默认0
boosting_type (str) -- 提升类型,默认'gbdt' - 'gbdt': 传统梯度提升树 - 'dart': Dropouts meet Multiple Additive Regression Trees - 'goss': Gradient-based One-Side Sampling - 'rf': 随机森林
objective (str) -- 目标函数,默认'binary'
eval_metric (str | List[str] | None) -- 评估指标,可选列表 - 多个指标时,默认使用第一个指标进行早停
early_stopping_rounds (int | None) -- 早停轮数,默认None
early_stopping_metric (str | None) -- 用于早停的评估指标名称,默认None(使用第一个指标) - 当eval_metric有多个时,可通过此参数指定用哪个指标进行早停判断
first_metric_only (bool) -- 是否只用第一个评估指标进行早停,默认True - 当eval_metric为列表时,True表示只用第一个指标早停,False表示监控所有指标
validation_fraction (float) -- 验证集比例,默认0.2
random_state (int | None) -- 随机种子,默认None
n_jobs (int) -- 并行任务数,默认-1
verbose (bool) -- 是否输出详细信息,默认False
params (Dict[str, Any] | None) -- LightGBM原生参数字典,默认None - 如果传入,将覆盖其他参数设置 - 可直接使用LightGBM原生参数名
kwargs -- 其他LightGBM参数
scorecard_params (Dict[str, Any] | None)
属性
- 变量:
feature_importances_ -- 特征重要性
evals_result_ -- 训练过程评估结果
best_iteration_ -- 最佳迭代次数
best_score_ -- 最佳得分
booster_ -- 底层LightGBM模型
- 参数:
num_leaves (int)
max_depth (int)
learning_rate (float)
n_estimators (int)
min_child_samples (int)
min_child_weight (float)
subsample (float)
colsample_bytree (float)
reg_alpha (float)
reg_lambda (float)
scale_pos_weight (float)
min_split_gain (float)
boosting_type (str)
objective (str)
eval_metric (str | List[str] | None)
early_stopping_rounds (int | None)
early_stopping_metric (str | None)
first_metric_only (bool)
validation_fraction (float)
random_state (int | None)
n_jobs (int)
verbose (bool)
params (Dict[str, Any] | None)
scorecard_params (Dict[str, Any] | None)
参考样例
>>> # 基础使用 >>> model = LightGBM(num_leaves=31, learning_rate=0.1) >>> model.fit(X_train, y_train)
>>> # 使用原生LightGBM参数 >>> params = {'num_leaves': 31, 'learning_rate': 0.05, 'subsample': 0.8} >>> model = LightGBM(params=params) >>> model.fit(X_train, y_train)
引用
基于 LightGBM 梯度提升框架(leaf-wise 生长 + 直方图算法),见 Ke, G. et al. (2017). LightGBM: A Highly Efficient Gradient Boosting Decision Tree. NeurIPS;文档 https://lightgbm.readthedocs.io/ 。
- fit(X, y=None, sample_weight=None, eval_set=None, **fit_params)[源代码]
训练LightGBM模型.
支持两种调用方式: 1. 常规方式: fit(X, y) 2. scorecardpipeline风格: fit(X) 在init中指定target
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
y (ndarray | Series | None) -- 目标变量,可选
sample_weight (ndarray | None) -- 样本权重
eval_set (List[Tuple] | None) -- 验证集列表
fit_params -- 其他fit参数
- 返回:
self
- 返回类型:
- predict(X)[源代码]
预测类别标签.
基于 predict_proba 取阈值,确保自定义损失(原始分数输出)下也能返回正确类别。
- 参数:
X (ndarray | DataFrame)
- 返回类型:
ndarray
- predict_proba(X)[源代码]
预测概率.
当使用自定义损失函数(objective 为可调用对象)时,LightGBM 返回的是 未经过链接函数转换的原始分数(raw margin,一维数组),此处自动应用 sigmoid 转换为概率并补齐为二维 (n_samples, 2) 输出,与内置目标保持一致。
- 参数:
X (ndarray | DataFrame)
- 返回类型:
ndarray
- get_feature_importances(importance_type='gain')[源代码]
获取特征重要性.
- 参数:
importance_type (str) -- 重要性类型,可选: - 'gain': 平均增益 (默认) - 'split': 分裂次数
- 返回:
特征重要性Series
- 返回类型:
Series
- property feature_importances_: ndarray
特征重要性属性 (兼容sklearn风格).
直接在包装类上暴露重要性,兼容sklearn RFE/SFS等组件的 importance_getter。
- plot_importance(max_num_features=10, **kwargs)[源代码]
绘制特征重要性.
- 参数:
max_num_features (int) -- 显示的最大特征数
kwargs -- 其他绘图参数
- class hscredit.core.models.boosting.catboost_model.CatBoost(depth=6, learning_rate=0.1, iterations=100, l2_leaf_reg=3.0, border_count=254, random_strength=1.0, bagging_temperature=1.0, scale_pos_weight=1.0, min_data_in_leaf=1, grow_policy='SymmetricTree', objective='Logloss', eval_metric='AUC', early_stopping_rounds=None, early_stopping_metric=None, validation_fraction=0.2, random_state=None, n_jobs=-1, verbose=False, params=None, scorecard_params=None, **kwargs)[源代码]
-
CatBoost风控模型.
基于CatBoost的二分类模型,针对风控场景优化。 CatBoost对类别特征有原生支持,无需编码。
参数
- 参数:
depth (int) -- 树深度,默认6
learning_rate (float) -- 学习率,默认0.1
iterations (int) -- 迭代次数,默认100
l2_leaf_reg (float) -- L2正则化系数,默认3.0
border_count (int) -- 边界分割数,默认254
random_strength (float) -- 随机强度,默认1
bagging_temperature (float) -- 采样温度,默认1
scale_pos_weight (float) -- 正负样本权重比,默认1
min_data_in_leaf (int) -- 叶子节点最小样本数,默认1
grow_policy (str) -- 生长策略,默认'SymmetricTree' - 'SymmetricTree': 对称树 - 'Depthwise': 逐层生长 - 'Lossguide': 按损失导向生长
objective (str) -- 目标函数,默认'Logloss'
eval_metric (str | List[str] | None) -- 评估指标,默认'AUC' - 支持字符串或列表(多个评估指标)
early_stopping_rounds (int | None) -- 早停轮数,默认None - 当验证集指标连续N轮没有提升时停止训练 - CatBoost仍支持此参数(与XGBoost/LightGBM新版不同)
early_stopping_metric (str | None) -- 用于早停的评估指标名称,默认None(使用eval_metric) - 当eval_metric有多个时,指定用哪个指标进行早停判断
validation_fraction (float) -- 验证集比例,默认0.2
random_state (int | None) -- 随机种子,默认None
verbose (bool) -- 是否输出详细信息,默认False
params (Dict[str, Any] | None) -- CatBoost原生参数字典,默认None - 如果传入,将覆盖其他参数设置 - 可直接使用CatBoost原生参数名
kwargs -- 其他CatBoost参数
n_jobs (int)
scorecard_params (Dict[str, Any] | None)
属性
- 变量:
feature_importances_ -- 特征重要性
evals_result_ -- 训练过程评估结果
best_iteration_ -- 最佳迭代次数
best_score_ -- 最佳得分
- 参数:
depth (int)
learning_rate (float)
iterations (int)
l2_leaf_reg (float)
border_count (int)
random_strength (float)
bagging_temperature (float)
scale_pos_weight (float)
min_data_in_leaf (int)
grow_policy (str)
objective (str)
eval_metric (str | List[str] | None)
early_stopping_rounds (int | None)
early_stopping_metric (str | None)
validation_fraction (float)
random_state (int | None)
n_jobs (int)
verbose (bool)
params (Dict[str, Any] | None)
scorecard_params (Dict[str, Any] | None)
参考样例
>>> # 基础使用 >>> model = CatBoost(depth=6, learning_rate=0.1) >>> model.fit(X_train, y_train)
>>> # 使用原生CatBoost参数 >>> params = {'depth': 6, 'learning_rate': 0.05, 'l2_leaf_reg': 3.0} >>> model = CatBoost(params=params) >>> model.fit(X_train, y_train)
引用
基于 CatBoost 梯度提升框架(有序提升 + 类别特征原生处理),见 Prokhorenkova, L. et al. (2018). CatBoost: unbiased boosting with categorical features. NeurIPS;文档 https://catboost.ai/docs/ 。
- fit(X, y=None, sample_weight=None, eval_set=None, cat_features=None, **fit_params)[源代码]
训练CatBoost模型.
支持两种调用方式: 1. 常规方式: fit(X, y) 2. scorecardpipeline风格: fit(X) 在init中指定target
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
y (ndarray | Series | None) -- 目标变量,可选
sample_weight (ndarray | None) -- 样本权重
eval_set (List[Tuple] | None) -- 验证集列表
cat_features (List[int] | None) -- 类别特征索引列表
fit_params -- 其他fit参数
- 返回:
self
- 返回类型:
- predict(X)[源代码]
预测类别标签.
基于 predict_proba 取阈值,确保自定义损失(原始分数输出)下也能返回正确类别。
- 参数:
X (ndarray | DataFrame)
- 返回类型:
ndarray
- predict_proba(X)[源代码]
预测概率.
当使用自定义损失函数(loss_function 为可调用对象)时,CatBoost 返回的是 未经过链接函数转换的原始分数(raw margin,一维数组),此处自动应用 sigmoid 转换为概率并补齐为二维 (n_samples, 2) 输出,与内置目标保持一致。
- 参数:
X (ndarray | DataFrame)
- 返回类型:
ndarray
- get_feature_importances(importance_type='PredictionValuesChange')[源代码]
获取特征重要性.
- 参数:
importance_type (str) -- 重要性类型,可选: - 'PredictionValuesChange': 预测值变化 (默认) - 'LossFunctionChange': 损失函数变化 - 'FeatureImportance': 分裂次数
- 返回:
特征重要性Series
- 返回类型:
Series
- property feature_importances_: ndarray
特征重要性属性 (兼容sklearn风格).
直接在包装类上暴露重要性,兼容sklearn RFE/SFS等组件的 importance_getter。
- class hscredit.core.models.boosting.ngboost_model.NGBoost(n_estimators=500, learning_rate=0.01, minibatch_frac=1.0, col_sample=1.0, base_max_depth=3, base_criterion='friedman_mse', base_min_samples_split=2, base_min_samples_leaf=1, natural_gradient=True, objective='binary', eval_metric=None, early_stopping_rounds=None, validation_fraction=0.2, random_state=None, n_jobs=-1, verbose=False, params=None, scorecard_params=None, **kwargs)[源代码]
-
NGBoost风控模型.
基于NGBoost的二分类模型,针对风控场景优化。 NGBoost通过自然梯度提升进行概率预测,能够输出预测不确定性, 适合风控中需要概率校准和不确定性量化的场景。
参数
- 参数:
n_estimators (int) -- 提升迭代次数(基学习器数量),默认500
learning_rate (float) -- 学习率,默认0.01 - NGBoost对学习率较敏感,通常使用较小的值
minibatch_frac (float) -- 每次迭代使用的样本比例,默认1.0 - 设为<1.0可进行随机梯度提升,加速训练
col_sample (float) -- 每次迭代使用的特征比例,默认1.0 - 类似XGBoost的colsample_bytree
base_max_depth (int) -- 基学习器(决策树)最大深度,默认3 - NGBoost使用回归树作为基学习器
base_criterion (str) -- 基学习器分裂准则,默认'friedman_mse'
base_min_samples_split (int) -- 基学习器节点分裂最小样本数,默认2
base_min_samples_leaf (int) -- 基学习器叶子节点最小样本数,默认1
natural_gradient (bool) -- 是否使用自然梯度,默认True - True: 使用自然梯度(推荐) - False: 使用普通梯度
objective (str) -- 目标函数,默认'binary'
eval_metric (str | List[str] | None) -- 评估指标,可选列表
early_stopping_rounds (int | None) -- 早停轮数,默认None - 连续N轮验证集loss没有改善则停止训练
validation_fraction (float) -- 验证集比例,默认0.2
random_state (int | None) -- 随机种子,默认None
n_jobs (int) -- 并行任务数,默认-1(NGBoost基学习器内部使用)
verbose (bool) -- 是否输出详细信息,默认False
params (Dict[str, Any] | None) -- NGBoost原生参数字典,默认None - 如果传入,将覆盖其他参数设置
kwargs -- 其他NGBoost参数
scorecard_params (Dict[str, Any] | None)
属性
- 变量:
feature_importances_ -- 特征重要性(基于loc参数的基学习器)
evals_result_ -- 训练过程评估结果
best_iteration_ -- 最佳迭代次数(验证集最优时的迭代轮数)
best_score_ -- 最佳得分
- 参数:
n_estimators (int)
learning_rate (float)
minibatch_frac (float)
col_sample (float)
base_max_depth (int)
base_criterion (str)
base_min_samples_split (int)
base_min_samples_leaf (int)
natural_gradient (bool)
objective (str)
eval_metric (str | List[str] | None)
early_stopping_rounds (int | None)
validation_fraction (float)
random_state (int | None)
n_jobs (int)
verbose (bool)
params (Dict[str, Any] | None)
scorecard_params (Dict[str, Any] | None)
参考样例
>>> # 基础使用 >>> model = NGBoost(n_estimators=500, learning_rate=0.01) >>> model.fit(X_train, y_train)
>>> # 使用验证集早停 >>> model = NGBoost( ... n_estimators=1000, ... learning_rate=0.01, ... early_stopping_rounds=50 ... ) >>> model.fit(X_train, y_train)
>>> # 使用原生NGBoost参数 >>> params = {'n_estimators': 500, 'learning_rate': 0.01, 'minibatch_frac': 0.8} >>> model = NGBoost(params=params) >>> model.fit(X_train, y_train)
>>> # 获取概率分布(不确定性估计) >>> dist = model.pred_dist(X_test) >>> print(dist.params)
引用
基于 NGBoost(自然梯度提升,输出概率分布以量化预测不确定性),见 Duan, T. et al. (2020). NGBoost: Natural Gradient Boosting for Probabilistic Prediction. ICML;文档 https://stanfordmlgroup.github.io/projects/ngboost/ 。
- fit(X, y=None, sample_weight=None, eval_set=None, **fit_params)[源代码]
训练NGBoost模型.
支持两种调用方式: 1. 常规方式: fit(X, y) 2. scorecardpipeline风格: fit(X) 在init中指定target
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
y (ndarray | Series | None) -- 目标变量,可选
sample_weight (ndarray | None) -- 样本权重
eval_set (List[Tuple] | None) -- 验证集列表 [(X_val, y_val)]
fit_params -- 其他fit参数
- 返回:
self
- 返回类型:
- property best_iteration_
最佳迭代次数.
- property best_score_
最佳得分.
- predict(X)[源代码]
预测类别标签.
支持传入包含target列的数据框(scorecardpipeline风格)。
- 参数:
X (ndarray | DataFrame)
- 返回类型:
ndarray
- predict_proba(X)[源代码]
预测概率.
支持传入包含target列的数据框(scorecardpipeline风格)。
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
- 返回:
预测概率,形状 (n_samples, 2)
- 返回类型:
ndarray
- pred_dist(X)[源代码]
预测概率分布.
返回NGBoost分布对象,可用于获取预测不确定性。
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
- 返回:
NGBoost分布对象
参考样例
>>> model = NGBoost() >>> model.fit(X_train, y_train) >>> dist = model.pred_dist(X_test) >>> print(dist.params)
- get_feature_importances(importance_type='gain')[源代码]
获取特征重要性.
NGBoost为每个分布参数维护独立的基学习器序列。 对于二分类(Bernoulli),使用第一个参数(p)的特征重要性。
- 参数:
importance_type (str) -- 重要性类型(保留参数,NGBoost使用基学习器默认重要性)
- 返回:
特征重要性Series
- 返回类型:
Series
- property feature_importances_: ndarray
特征重要性属性 (兼容sklearn风格).
返回一维numpy数组,与其他RiskModel保持一致。
- staged_predict(X)[源代码]
阶段预测.
返回每个迭代阶段的预测结果列表。
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
- 返回:
预测结果列表,长度为n_estimators
- 返回类型:
List[ndarray]
- staged_pred_dist(X)[源代码]
阶段分布预测.
返回每个迭代阶段的完整分布预测。
- 参数:
X (ndarray | DataFrame) -- 特征矩阵
- 返回:
分布对象列表
- 返回类型:
list