lightgbm.DaskLGBMRegressor
- class lightgbm.DaskLGBMRegressor(*, boosting_type='gbdt', num_leaves=31, max_depth=-1, learning_rate=0.1, n_estimators=100, subsample_for_bin=200000, objective=None, class_weight=None, min_split_gain=0.0, min_child_weight=0.001, min_child_samples=20, subsample=1.0, subsample_freq=0, colsample_bytree=1.0, reg_alpha=0.0, reg_lambda=0.0, random_state=None, n_jobs=None, importance_type='split', client=None, **kwargs)[source]
- 基类: - LGBMRegressor,- _DaskLGBMModel- lightgbm.LGBMRegressor 的分布式版本。 - __init__(*, boosting_type='gbdt', num_leaves=31, max_depth=-1, learning_rate=0.1, n_estimators=100, subsample_for_bin=200000, objective=None, class_weight=None, min_split_gain=0.0, min_child_weight=0.001, min_child_samples=20, subsample=1.0, subsample_freq=0, colsample_bytree=1.0, reg_alpha=0.0, reg_lambda=0.0, random_state=None, n_jobs=None, importance_type='split', client=None, **kwargs)[source]
- 构建一个梯度提升模型。 - 参数:
- boosting_type (str, 可选 (默认='gbdt')) – ‘gbdt’,传统梯度提升决策树;‘dart’,Dropouts meets Multiple Additive Regression Trees;‘rf’,随机森林。 
- num_leaves (int, 可选 (默认=31)) – 基学习器的最大树叶数。 
- max_depth (int, 可选 (默认=-1)) – 基学习器的最大树深度,<=0 表示无限制。如果将其设置为正值,请同时考虑将 - num_leaves更改为- <= 2^max_depth。
- learning_rate (float, 可选 (默认=0.1)) – 提升学习率。您可以使用 - fit方法的- callbacks参数,通过- reset_parameter回调在训练中收缩/调整学习率。请注意,这将忽略训练中的- learning_rate参数。
- n_estimators (int, 可选 (默认=100)) – 要拟合的提升树数量。 
- subsample_for_bin (int, 可选 (默认=200000)) – 用于构建 bin 的样本数量。 
- objective (str, 可调用对象 或 None, 可选 (默认=None)) – 指定学习任务和相应的学习目标或要使用的自定义目标函数(参见下面的注意)。默认:LGBMRegressor 为 ‘regression’,LGBMClassifier 为 ‘binary’ 或 ‘multiclass’,LGBMRanker 为 ‘lambdarank’。 
- class_weight (dict, 'balanced' 或 None, 可选 (默认=None)) – 与类别相关的权重,形式为 - {类别标签: 权重}。此参数仅用于多类别分类任务;对于二元分类任务,您可以使用- is_unbalance或- scale_pos_weight参数。请注意,使用所有这些参数会导致对单个类别概率的估计较差。您可能需要考虑对模型进行概率校准(https://scikit-learn.cn/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)) – 随机数种子。如果是 int,此数字用于为 C++ 代码设置种子。如果是 RandomState 或 Generator 对象 (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’,结果包含使用该特征的分割的总增益。
- client (dask.distributed.Client 或 None, 可选 (默认=None)) – Dask 客户端。如果为 - None,运行时将使用- distributed.default_client()。如果模型对象被 pickle 序列化,此类别使用的 Dask 客户端将不会被保存。
- **kwargs – - 模型的其他参数。更多参数请参阅 https://lightgbm.cn/en/stable/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_true形状为 [n_samples] 的 numpy 1 维数组
- 目标值。 
- y_pred形状为 [n_samples] 的 numpy 1 维数组或形状为 [n_samples, n_classes] 的 numpy 2 维数组(用于多类别任务)
- 预测值。预测值在任何转换之前返回,例如,对于二元任务,它们是原始的 margin 而不是正类别的概率。 
- weight形状为 [n_samples] 的 numpy 1 维数组
- 样本权重。权重应为非负数。 
- groupnumpy 1 维数组
- 组/查询数据。仅用于排名学习任务。sum(group) = n_samples。例如,如果您有一个包含 100 个文档的数据集,并且 - group = [10, 20, 40, 10, 10, 10],这意味着您有 6 个组,其中前 10 条记录在第一个组中,第 11-30 条记录在第二个组中,第 31-70 条记录在第三个组中,依此类推。
- grad形状为 [n_samples] 的 numpy 1 维数组或形状为 [n_samples, n_classes] 的 numpy 2 维数组(用于多类别任务)
- 对于每个样本点,损失函数关于 y_pred 元素的的一阶导数(梯度)值。 
- hess形状为 [n_samples] 的 numpy 1 维数组或形状为 [n_samples, n_classes] 的 numpy 2 维数组(用于多类别任务)
- 对于每个样本点,损失函数关于 y_pred 元素的二阶导数(Hessian)值。 
 - 对于多类别任务,y_pred 是一个形状为 [n_samples, n_classes] 的 numpy 2 维数组,grad 和 hess 应以相同格式返回。 
 - 方法 - __init__(*[, boosting_type, num_leaves, ...])- 构建一个梯度提升模型。 - fit(X, y[, sample_weight, init_score, ...])- 根据训练集 (X, y) 构建一个梯度提升模型。 - 获取此对象的元数据路由。 - get_params([deep])- 获取此估计器的参数。 - predict(X[, raw_score, start_iteration, ...])- 返回每个样本的预测值。 - score(X, y[, sample_weight])- 返回预测的决定系数。 - set_fit_request(*[, eval_init_score, ...])- 请求传递给 - fit方法的元数据。- set_params(**params)- 设置此估计器的参数。 - set_predict_request(*[, num_iteration, ...])- 请求传递给 - predict方法的元数据。- set_score_request(*[, sample_weight])- 请求传递给 - score方法的元数据。- to_local()- 从分布式版本创建 lightgbm.LGBMRegressor 的常规版本。 - 属性 - 如果指定了 - early_stopping()回调,则为拟合模型的最佳迭代次数。- 拟合模型的最佳得分。 - 此模型的底层 Booster。 - Dask 客户端。 - 如果指定了验证集,则为评估结果。 - 特征重要性(值越高越重要)。 - 特征名称。 - .feature_name_的 scikit-learn 兼容版本。- 执行的实际 boosting 迭代次数。 - 拟合模型的特征数量。 - 拟合模型的特征数量。 - 执行的实际 boosting 迭代次数。 - 拟合此模型时使用的具体目标函数。 - property best_iteration_
- 如果指定了 - early_stopping()回调,则为拟合模型的最佳迭代次数。- 类型:
- int
 
 - property best_score_
- 拟合模型的最佳得分。 - 类型:
- dict
 
 - property client_
- Dask 客户端。 - 此属性可在构造函数中传入,或通过 - model.set_params(client=client)更新。- 类型:
- dask.distributed.Client
 
 - property evals_result_
- 如果指定了验证集,则为评估结果。 - 类型:
- dict
 
 - property feature_importances_
- 特征重要性(值越高越重要)。 - 注意 - importance_type属性被传递给函数以配置要提取的重要性值类型。- 类型:
- 形状为 [n_features] 的 - array
 
 - property feature_name_
- 特征名称。 - 注意 - 如果输入不包含特征名称,它们将在拟合期间以 - Column_0,- Column_1, …,- Column_N的格式添加。- 类型:
- 形状为 [n_features] 的 - list
 
 - property feature_names_in_
- .feature_name_的 scikit-learn 兼容版本。- 在 4.5.0 版本中新增。 - 类型:
- 形状为 [n_features] 的 - array
 
 - fit(X, y, sample_weight=None, init_score=None, eval_set=None, eval_names=None, eval_sample_weight=None, eval_init_score=None, eval_metric=None, **kwargs)[source]
- 根据训练集 (X, y) 构建一个梯度提升模型。 - 参数:
- X (形状为 [n_samples, n_features] 的 Dask Array 或 Dask DataFrame) – 输入特征矩阵。 
- y (形状为 [n_samples] 的 Dask Array, Dask DataFrame 或 Dask Series) – 目标值(分类中的类别标签,回归中的实数)。 
- sample_weight (形状为 [n_samples] 的 Dask Array 或 Dask Series 或 None, 可选 (默认=None)) – 训练数据权重。权重应为非负数。 
- init_score (形状为 [n_samples] 的 Dask Array 或 Dask Series 或 None, 可选 (默认=None)) – 训练数据的初始得分。 
- eval_set (list 或 None, 可选 (默认=None)) – 用作验证集的 (X, y) 元组对列表。 
- eval_names (str 列表, 或 None, 可选 (默认=None)) – eval_set 的名称。 
- eval_sample_weight (Dask Array 或 Dask Series 列表, 或 None, 可选 (默认=None)) – 评估数据权重。权重应为非负数。 
- eval_init_score (Dask Array 或 Dask Series 列表, 或 None, 可选 (默认=None)) – 评估数据的初始得分。 
- eval_metric (str, 可调用对象, list 或 None, 可选 (默认=None)) – 如果是 str,应为要使用的内置评估指标。如果是可调用对象,应为自定义评估指标,更多详细信息请参见下面的注意。如果是 list,可以是内置指标列表、自定义评估指标列表或两者的混合。无论哪种情况,模型参数中的 - metric也将被评估和使用。默认:LGBMRegressor 为 ‘l2’,LGBMClassifier 为 ‘logloss’,LGBMRanker 为 ‘ndcg’。
- feature_name (str 列表, 或 'auto', 可选 (默认='auto')) – 特征名称。如果为 ‘auto’ 且数据是 pandas DataFrame,则使用数据列名。 
- categorical_feature (str 或 int 列表, 或 'auto', 可选 (默认='auto')) – 类别特征。如果是 int 列表,则解释为索引。如果是 str 列表,则解释为特征名称(也需要指定 - feature_name)。如果为 ‘auto’ 且数据是 pandas DataFrame,则使用 pandas 无序类别列。类别特征中的所有值都将被转换为 int32,因此应小于 int32 最大值 (2147483647)。大值可能会消耗内存。考虑使用从零开始的连续整数。类别特征中的所有负值都将被视为缺失值。输出不能相对于类别特征单调约束。类别特征中的浮点数将四舍五入到接近 0 的整数。
- **kwargs – 传递给 - LGBMRegressor.fit()的其他参数。
 
- 返回值:
- self – 返回自身。 
- 返回类型:
 - 注意 - 自定义评估函数需要一个可调用对象,签名如下: - func(y_true, y_pred),- func(y_true, y_pred, weight)或- func(y_true, y_pred, weight, group),并返回 (eval_name, eval_result, is_higher_better) 或 (eval_name, eval_result, is_higher_better) 的列表- y_true形状为 [n_samples] 的 numpy 1 维数组
- 目标值。 
- y_pred形状为 [n_samples] 的 numpy 1 维数组或形状为 [n_samples, n_classes] 的 numpy 2 维数组(用于多类别任务)
- 预测值。在使用自定义 - objective的情况下,预测值在任何转换之前返回,例如,在这种情况下,对于二元任务,它们是原始 margin 而不是正类别的概率。
- weight形状为 [n_samples] 的 numpy 1 维数组
- 样本权重。权重应为非负数。 
- groupnumpy 1 维数组
- 组/查询数据。仅用于排名学习任务。sum(group) = n_samples。例如,如果您有一个包含 100 个文档的数据集,并且 - group = [10, 20, 40, 10, 10, 10],这意味着您有 6 个组,其中前 10 条记录在第一个组中,第 11-30 条记录在第二个组中,第 31-70 条记录在第三个组中,依此类推。
- eval_namestr
- 评估函数的名称(无空格)。 
- eval_resultfloat
- 评估结果。 
- is_higher_betterbool
- 评估结果是否越高越好,例如 AUC 是 - is_higher_better。
 
 - get_metadata_routing()
- 获取此对象的元数据路由。 - 请查阅 用户指南 了解路由机制的工作原理。 - 返回值:
- routing – 包含路由信息的 - MetadataRequest。
- 返回类型:
- MetadataRequest 
 
 - get_params(deep=True)
- 获取此估计器的参数。 - 参数:
- deep (bool, 可选 (默认=True)) – 如果为 True,则返回此估计器及其包含的作为估计器的子对象的参数。 
- 返回值:
- params – 参数名称及其对应值的映射。 
- 返回类型:
- dict 
 
 - property n_estimators_
- 执行的实际 boosting 迭代次数。 - 如果启用了早停或由于 - min_gain_to_split等复杂度限制导致 boosting 提前停止,则此值可能小于参数- n_estimators。- 在 4.0.0 版本中新增。 - 类型:
- int
 
 - property n_features_
- 拟合模型的特征数量。 - 类型:
- int
 
 - property n_features_in_
- 拟合模型的特征数量。 - 类型:
- int
 
 - property n_iter_
- 执行的实际 boosting 迭代次数。 - 如果启用了早停或由于 - min_gain_to_split等复杂度限制导致 boosting 提前停止,则此值可能小于参数- n_estimators。- 在 4.0.0 版本中新增。 - 类型:
- int
 
 - property objective_
- 拟合此模型时使用的具体目标函数。 - 类型:
- str或- callable
 
 - predict(X, raw_score=False, start_iteration=0, num_iteration=None, pred_leaf=False, pred_contrib=False, validate_features=False, **kwargs)[source]
- 返回每个样本的预测值。 - 参数:
- X (形状为 [n_samples, n_features] 的 Dask Array 或 Dask DataFrame) – 输入特征矩阵。 
- raw_score (bool, 可选 (默认=False)) – 是否预测原始得分。 
- start_iteration (int, 可选 (默认=0)) – 要预测的迭代的起始索引。如果 <= 0,则从第一次迭代开始。 
- num_iteration (int 或 None, 可选 (默认=None)) – 预测中使用的总迭代次数。如果为 None,且最佳迭代次数存在且 start_iteration <= 0,则使用最佳迭代次数;否则,使用从 - start_iteration开始的所有迭代(无限制)。如果 <= 0,则使用从- start_iteration开始的所有迭代(无限制)。
- pred_leaf (bool, 可选 (默认=False)) – 是否预测叶节点索引。 
- pred_contrib (bool, 可选 (默认=False)) – - 是否预测特征贡献。 - 注意 - 如果您想使用 SHAP 值(如 SHAP 交互值)获取更多模型预测解释,可以安装 shap 包(https://github.com/slundberg/shap)。请注意,与 shap 包不同,使用 - pred_contrib时,我们返回一个包含额外列的矩阵,其中最后一列是期望值。
- validate_features (bool, 可选 (默认=False)) – 如果为 True,确保用于预测的特征与用于训练的特征匹配。仅当数据为 pandas DataFrame 时使用。 
- **kwargs – 预测的其他参数。 
 
- 返回值:
- predicted_result (形状为 [n_samples] 的 Dask Array) – 预测值。 
- X_leaves (形状为 [n_samples, n_trees] 的 Dask Array) – 如果 - pred_leaf=True,则为每个样本在每棵树中的预测叶节点。
- X_SHAP_values (形状为 [n_samples, n_features + 1] 的 Dask Array) – 如果 - pred_contrib=True,则为每个样本的特征贡献。
 
 
 - score(X, y, sample_weight=None)
- 返回预测的决定系数。 - 决定系数 \(R^2\) 定义为 \((1 - \frac{u}{v})\),其中 \(u\) 是残差平方和 - ((y_true - y_pred)** 2).sum(),\(v\) 是总平方和- ((y_true - y_true.mean()) ** 2).sum()。最佳可能得分为 1.0,也可能为负(因为模型可能任意糟糕)。一个始终预测 y 的期望值而忽略输入特征的常数模型,其 \(R^2\) 得分将为 0.0。- 参数:
- X (形状为 (n_samples, n_features) 的类数组对象) – 测试样本。对于某些估计器,这可能是预先计算的核矩阵或通用对象列表,形状为 - (n_samples, n_samples_fitted),其中- n_samples_fitted是估计器拟合中使用的样本数量。
- y (形状为 (n_samples,) 或 (n_samples, n_outputs) 的类数组对象) – X 的真实值。 
- sample_weight (形状为 (n_samples,) 的类数组对象, 默认=None) – 样本权重。 
 
- 返回值:
- score – - self.predict(X)相对于 y 的 \(R^2\) 值。
- 返回类型:
- float 
 - 注意 - 在对回归器调用 - score时使用的 \(R^2\) 得分从 0.23 版本开始使用- multioutput='uniform_average',以与- r2_score()的默认值保持一致。这会影响所有多输出回归器(- MultiOutputRegressor除外)的- score方法。
 - set_fit_request(*, eval_init_score='$UNCHANGED$', eval_metric='$UNCHANGED$', eval_names='$UNCHANGED$', eval_sample_weight='$UNCHANGED$', eval_set='$UNCHANGED$', init_score='$UNCHANGED$', sample_weight='$UNCHANGED$')
- 请求传递给 - fit方法的元数据。- 请注意,此方法仅在 - enable_metadata_routing=True时有效(参见- sklearn.set_config())。请参阅 用户指南 了解路由机制的工作原理。- 每个参数的选项为 - True: 请求元数据,如果提供则传递给- fit。如果未提供元数据,则忽略请求。
- False: 不请求元数据,且元估计器不会将其传递给- fit。
- None: 不请求元数据,如果用户提供元数据,则元估计器将引发错误。
- str: 应将元数据以给定的别名而不是原始名称传递给元估计器。
 - 默认值 ( - sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。- 在 1.3 版本中新增。 - 注意 - 只有当此估计器用作元估计器的子估计器时,例如在 - Pipeline中使用时,此方法才相关。否则无效。- 参数:
- eval_init_score (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - fit方法中- eval_init_score参数的元数据路由。
- eval_metric (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - fit方法中- eval_metric参数的元数据路由。
- eval_names (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - fit方法中- eval_names参数的元数据路由。
- eval_sample_weight (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - fit方法中- eval_sample_weight参数的元数据路由。
- eval_set (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - fit方法中- eval_set参数的元数据路由。
- init_score (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - fit方法中- init_score参数的元数据路由。
- sample_weight (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - fit方法中- sample_weight参数的元数据路由。
 
- 返回值:
- self – 更新后的对象。 
- 返回类型:
- object 
 
 - set_params(**params)
- 设置此估计器的参数。 - 参数:
- **params – 参数名称及其新值。 
- 返回值:
- self – 返回自身。 
- 返回类型:
- object 
 
 - set_predict_request(*, num_iteration='$UNCHANGED$', pred_contrib='$UNCHANGED$', pred_leaf='$UNCHANGED$', raw_score='$UNCHANGED$', start_iteration='$UNCHANGED$', validate_features='$UNCHANGED$')
- 请求传递给 - predict方法的元数据。- 请注意,此方法仅在 - enable_metadata_routing=True时有效(参见- sklearn.set_config())。请参阅 用户指南 了解路由机制的工作原理。- 每个参数的选项为 - True: 请求元数据,如果提供则传递给- predict。如果未提供元数据,则忽略请求。
- False: 不请求元数据,且元估计器不会将其传递给- predict。
- None: 不请求元数据,如果用户提供元数据,则元估计器将引发错误。
- str: 应将元数据以给定的别名而不是原始名称传递给元估计器。
 - 默认值 ( - sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。- 在 1.3 版本中新增。 - 注意 - 只有当此估计器用作元估计器的子估计器时,例如在 - Pipeline中使用时,此方法才相关。否则无效。- 参数:
- num_iteration (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - predict方法中- num_iteration参数的元数据路由。
- pred_contrib (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - predict方法中- pred_contrib参数的元数据路由。
- pred_leaf (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - predict方法中- pred_leaf参数的元数据路由。
- raw_score (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - predict方法中- raw_score参数的元数据路由。
- start_iteration (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - predict方法中- start_iteration参数的元数据路由。
- validate_features (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - predict方法中- validate_features参数的元数据路由。
 
- 返回值:
- self – 更新后的对象。 
- 返回类型:
- object 
 
 - set_score_request(*, sample_weight='$UNCHANGED$')
- 请求传递给 - score方法的元数据。- 请注意,此方法仅在 - enable_metadata_routing=True时有效(参见- sklearn.set_config())。请参阅 用户指南 了解路由机制的工作原理。- 每个参数的选项为 - True: 请求元数据,如果提供则传递给- score。如果未提供元数据,则忽略请求。
- False: 不请求元数据,且元估计器不会将其传递给- score。
- None: 不请求元数据,如果用户提供元数据,则元估计器将引发错误。
- str: 应将元数据以给定的别名而不是原始名称传递给元估计器。
 - 默认值 ( - sklearn.utils.metadata_routing.UNCHANGED) 保留现有请求。这允许您更改某些参数的请求而不更改其他参数。- 在 1.3 版本中新增。 - 注意 - 只有当此估计器用作元估计器的子估计器时,例如在 - Pipeline中使用时,此方法才相关。否则无效。- 参数:
- sample_weight (str, True, False, 或 None, 默认=sklearn.utils.metadata_routing.UNCHANGED) – - score方法中- sample_weight参数的元数据路由。
- 返回值:
- self – 更新后的对象。 
- 返回类型:
- object