Python 3.x python中的随机森林可视化

Python 3.x python中的随机森林可视化,python-3.x,visualization,random-forest,Python 3.x,Visualization,Random Forest,TypeError回溯(最近一次调用) 在里面 3特征名称=fn, 4类名称=cn, ---->5=假); 6图savefig('rf_individualtree.png')) 绘图树中的~/opt/anaconda3/lib/python3.7/site-packages/sklearn/tree//u export.py(决策树、最大深度、特征名称、类名、标签、填充、杂质、节点ID、比例、旋转、圆角、精度、ax、字体大小) 174比例=比例,旋转=旋转,四舍五入=四舍五入, 175精度=精

TypeError回溯(最近一次调用)
在里面
3特征名称=fn,
4类名称=cn,
---->5=假);
6图savefig('rf_individualtree.png'))
绘图树中的~/opt/anaconda3/lib/python3.7/site-packages/sklearn/tree//u export.py(决策树、最大深度、特征名称、类名、标签、填充、杂质、节点ID、比例、旋转、圆角、精度、ax、字体大小)
174比例=比例,旋转=旋转,四舍五入=四舍五入,
175精度=精度,字体大小=字体大小)
-->176返回导出器。导出(决策树,ax=ax)
177
178
导出中的~/opt/anaconda3/lib/python3.7/site-packages/sklearn/tree//\u export.py(self、decision\u tree、ax)
565 ax.设置轴关闭()
566 my_tree=self._make_tree(0,decision_tree.tree),
-->567决策树(标准)
568绘制树=布赫海姆(我的树)
569
~/opt/anaconda3/lib/python3.7/site-packages/sklearn/tree//u export.py in\u make\u tree(self、node\u id、et、criteria、depth)
546#递归遍历#树。树,构建中间
547#“_reingold_tilford.Tree”对象
-->548 name=self.node\u to\u str(et,node\u id,criteria=criteria)
549如果(et.children\u left[node\u id]!=\u tree.tree\u LEAF
550和(self.max_depth为无或深度342节点_字符串+=类_名称
343
344#清理所有后续换行
TypeError:只能将str(而不是“numpy.int64”)连接到str
导入matplotlib.pyplot作为plt
将numpy作为np导入
进口PIL
导入pydot
进口警告
从sklearn导入树
从全局导入全局
从IPython.display导入显示,图像
作为pd进口熊猫
从sklearn.employ导入随机林分类器
从sklearn.tree导入导出_graphviz
%matplotlib内联
警告。过滤器警告(“忽略”)
df=pd.read\u csv('heart.csv')
df.head()
x=df.loc[:,df.columns!=“目标”]
y=df.loc[:,'target'].值
从sklearn.model\u选择导入列车\u测试\u拆分
x_序列,x_测试,y_序列,y_测试=序列测试分割(x,y,测试大小=0.2,随机状态=0)
从sklearn.preprocessing导入StandardScaler
sc=StandardScaler()
x_序列=sc.fit_变换(x_序列)
x_测试=sc.transform(x_测试)
rf=随机变量(n_估计值=100,
随机_状态=0)
右前安装(x_系列、y_系列)
fn=特征=列表(df.columns[1:])
cn=df.target
图,轴=plt.子批次(nrows=1,ncols=1,figsize=(4,4),dpi=800)
树.绘图树(rf.估计器[0],
特征名称=fn,
类别名称=cn,
填充=假);

fig.savefig('rf_individualtree.png')
plot\u tree
中,参数
class\u name
需要一个字符串列表,但在您的代码cn中是一个整数列表(精确地说是numpy.int64)。您所需要做的就是将该列表转换为字符串并解决问题

#some code before
fn=features = list(df.columns[1:])
cn=df.target

#conversion from list of numpy.int64 to list of string
cn=[str(x) for x in cn]

fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=800)
tree.plot_tree(...
#some code after

plot\u tree
中的参数
class\u name
需要一个字符串列表,但在您的代码cn中是一个整数列表(精确地说是numpy.int64)。您只需将该列表转换为字符串并解决问题

#some code before
fn=features = list(df.columns[1:])
cn=df.target

#conversion from list of numpy.int64 to list of string
cn=[str(x) for x in cn]

fig, axes = plt.subplots(nrows = 1,ncols = 1,figsize = (4,4), dpi=800)
tree.plot_tree(...
#some code after

这可能是因为在某个时刻(tree.plot_tree),代码要求字符串,但您给它整数。请帮我一个忙,在plot_tree type(fn)、type(cn)、type(fn[0])、type(cn[0])之前在代码中包含一个,看看它们是否不是字符串或列表。如果是这样,您应该在fn中为x编写fn=[str(x)],fc=[str(x)表示fc中的x]。此外,如果你写代码而不是发布图片,人们可以比复制图片更快地测试代码。同样的错误,如果你写了所有的内容,那么就更容易直接找到问题所在。嗨,谢谢你的回复,我已经上传了整个代码。我刚刚在html上上传了它ole,对不起,我是新来的,所以不太熟悉功能,也似乎不能使用很多功能,因为我也是新来的,希望你能帮助mesorry如果我听起来太苛刻,解决方案正在进行中。可能是因为在某个时候(tree.plot\u tree)代码要求字符串,但您给了它整数。请帮我一个忙,在绘图树类型(fn)、类型(cn)、类型(fn[0])、类型(cn[0])之前在代码中包含一个,看看它们中是否有一个不是字符串或列表。如果是这种情况,您应该编写fn=[str(x)代表fn中的x],fc=[str(x)代表fc中的x]。此外,如果你写代码而不是发布图片,人们可以比复制图片更快地测试代码。同样的错误,如果你写了所有的内容,那么就更容易直接找到问题所在。嗨,谢谢你的回复,我已经上传了整个代码。我刚刚在html上上传了它ole,抱歉我是新来的,所以对功能不太熟悉,而且似乎也不能使用很多功能,因为我也是新来的,希望你能帮助mesorry如果我听起来太苛刻,解决方案正在进行中。