Визуализация plot_tree Catboost в Python

Я пытаюсь визуализировать свою модель Catboost в Python с помощью кода:

model_CBC.plot_tree(tree_idx=0, pool=pool)
plt.show()

Я получаю вывод остальной части кода, но не вижу никакого дерева. Процесс заканчивается так:

MetricVisualizer(layout=Layout(align_self='stretch', height='500px'))
Learning rate set to 0.084924
0:  learn: 1.0230107    total: 111ms    remaining: 1m 51s
1:  learn: 0.9612983    total: 158ms    remaining: 1m 18s
.
.
.
998:    learn: 0.2291117    total: 45s  remaining: 45.1ms
999:    learn: 0.2290360    total: 45.1s    remaining: 0us
Accuracy: 84.90%

Process finished with exit code 0

Любые предложения, как увидеть дерево?

Код моего метода catboost:

import pandas as pd
import numpy as np
import xgboost as xgb
import catboost as ctb
import lightgbm as lgb
from xgboost import plot_tree
from lightgbm import plot_tree as lgbm_tree

import matplotlib.pyplot as plt
from sklearn.metrics import accuracy_score
from sklearn.model_selection import train_test_split
from sklearn.feature_extraction.text import TfidfVectorizer


# Load the data from the CSV file
data = pd.read_excel('/ileti.xlsx')

# Define the feature and target data
features = data["ileti"]
target = data["label"]

# Split the data into training and testing sets
train_features, test_features, train_target, test_target = train_test_split(features, target, test_size=0.2, random_state=42)


def catboost():
    global train_features, test_features
    vectorizer = TfidfVectorizer()
    train_features = vectorizer.fit_transform(train_features)
    test_features = vectorizer.transform(test_features)
    pool = ctb.Pool(train_features, train_target)
    model_CBC = ctb.CatBoostClassifier().fit(pool, plot=True)
    model_CBC.plot_tree(tree_idx=0, pool=pool)
    plt.show()
    #model_CBC.fit(pool, plot=True)
    #print(model_CBC)
    expected_y = test_target
    predicted_y = model_CBC.predict(test_features)
    accuracy = accuracy_score(expected_y, predicted_y)
    print("Accuracy: %.2f%%" % (accuracy * 100.0))



catboost()

Я пытался найти в Интернете аналогичную проблему, но не смог найти никаких решений. Я устанавливаю graphiz через brew и pip, и он отлично работает при визуализации дерева сюжетов xgboost и дерева сюжетов lightgbm.

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
64
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Проблема решается сохранением дерева в переменную и вызовом метода рендеринга.

a = model_CBC.plot_tree(tree_idx=4)
a.render()

Это создает файл PDF с графиком в нем.

Другие вопросы по теме