以人类可解释的方式表示 catboost 模型

Representation of catboost model in a human-interpretable manner

在建模问题中使用的最流行的包中,有很多函数可以将模型对象转换为人类可以理解的东西,例如xgboost 中的 xgb.model.dt.tree 或 GBM 中的 pretty.gbm.tree。 catboost 包中是否有任何类似的功能或将模型表示为例如数据框的任何其他可能性? catboost.Model class 的对象是一个带有外部指针和原始数据元素的列表,查找有关模型结构的一些信息的唯一方法是将其保存为 .py 文件,但它相当苛刻方式。

有一个tree_idx属性,但它只能用于plot_tree的树可视化,不能直接用于model;这是波士顿数据的可重现示例:

import numpy as np
import catboost
from catboost import CatBoostRegressor
from sklearn.datasets import load_boston

boston = load_boston()
y = boston['target']
X = boston['data']

model = CatBoostRegressor(depth=2, verbose=False, iterations=5).fit(X, y)

model.plot_tree(tree_idx=0)

model.plot_tree(tree_idx=4)