Nucleon_17th 2022-12-03 16:54 采纳率: 100%
浏览 36
已结题

plot_tree模块绘图无法显示分类名(但有输入分类名参数)

提问::plot_tree模块绘图无法显示分类名,但是已经加上了class_names参数


import numpy as np
import pandas as pd
from sklearn.model_selection import GridSearchCV # 通过网格方式来搜索参数
from sklearn.tree import DecisionTreeClassifier as dtc
import matplotlib.pyplot as plt # 可视化
from matplotlib import rcParams # 图大小
from sklearn.tree import plot_tree # 树图
from termcolor import colored as cl # 文本自定义

data = pd.read_csv("class_weathering_chemical.csv")#导入数据集
features = data.columns[1:15]
X = data[features]#设置待估Xy
y = data[data.columns[15:17]]

# 设置需要搜索的参数值,在这里寻找最优的决策树深度
parameters = {'max_depth':[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]}
model = dtc()  # 注意:在这里不用指定参数
# GridSearchCV
clf = GridSearchCV(model, parameters, cv=5)   
clf.fit(X, y)
# 输出最好的参数以及对应的准确率
print ("best score is: %.4f"%clf.best_score_, "  best param: ",clf.best_params_,)

model = dtc(max_depth=3,criterion = 'entropy')#一层无法可视化,于是构建两层
model = model.fit(X, y)

rcParams['figure.figsize'] = (5, 5)
target_names = ['rich_k','PbBa']
from sklearn.tree import plot_tree # 树图
plot_tree(
    model, 
    feature_names = features,  
    class_names= target_names,
    filled=True,
    rounded = True
)
plt.savefig('tree_visualization.png')

运行出来的图像并没有显示分类名

img

想要达成

img

这样的下面有显示类名的效果

  • 写回答

1条回答 默认 最新

  • ShowMeAI 2022-12-03 18:07
    关注

    y = data[data.columns[15:17]]
    似乎你的label的2个类别是用one-hot展开为2列的,用decision tree你放到一列里就可以。

    你可以试试用下面的函数转到一列中,再fit

    # conver one-hot to label
    def one_hot_to_label(y):
        y_label = np.zeros(y.shape[0])
        for i in range(y.shape[0]):
            y_label[i] = np.argmax(y[i])
        return y_label
    
    y = one_hot_to_label(y)
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月11日
  • 已采纳回答 12月3日
  • 创建了问题 12月3日

悬赏问题

  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境
  • ¥30 关于#java#的问题,请各位专家解答!
  • ¥30 vue+element根据数据循环生成多个table,如何实现最后一列 平均分合并
  • ¥20 pcf8563时钟芯片不启振