CatBoost拟合绘图是否支持暗黑模式?如何配置实现?
实现CatBoost拟合图暗黑模式的方法
CatBoost内置的plot=True生成的拟合图确实没有直接的暗黑模式配置选项,不过可以通过手动提取训练过程的评估数据,用Matplotlib/Seaborn重新绘制的方式,复用你已经配置好的暗黑样式。
步骤1:关闭内置绘图,保存训练日志
修改fit方法参数,关闭自动绘图并保存训练评估结果:
from catboost import CatBoostRegressor, Pool train_dataset = Pool(X_train,y_train) test_dataset = Pool(X_test,y_test) model = CatBoostRegressor() # 关闭内置绘图,保留训练日志 model.fit( X=train_dataset, eval_set=test_dataset, plot=False, verbose=False # 可选,关闭控制台冗余日志 ) # 提取训练过程的评估数据 history = model.get_evals_result()
步骤2:用Matplotlib手动绘制拟合图
基于提取的日志数据,复用你已配置的暗黑样式绘制训练曲线:
import seaborn as sns import matplotlib.pyplot as plt # 保留你已有的暗黑模式配置 sns.set(style="darkgrid", context="talk") plt.style.use("dark_background") plt.rcParams.update({"grid.linewidth":0.5, "grid.alpha":0.5}) # 提取训练/测试集的损失值(替换为你的模型实际损失函数,如MAE/Logloss等) train_loss = history['learn']['RMSE'] test_loss = history['validation']['RMSE'] epochs = range(1, len(train_loss)+1) # 绘制曲线 plt.figure(figsize=(10,6)) plt.plot(epochs, train_loss, label='训练集损失', linewidth=2) plt.plot(epochs, test_loss, label='测试集损失', linewidth=2) plt.xlabel('迭代次数') plt.ylabel('损失值') plt.title('CatBoost训练损失曲线') plt.legend() plt.grid(True) plt.show()
关键说明
- 可通过
model.get_params()['loss_function']查看模型当前使用的损失函数,将代码中的RMSE替换为对应名称即可匹配你的训练任务。 - 这种方式完全遵循你已配置的Matplotlib暗黑样式,所有图表元素(背景、网格、线条颜色)都会自动适配暗黑模式。
内容的提问来源于stack exchange,提问作者Kkameleon
相关产品推荐
相关产品推荐

