首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >graphviz可以显示一次解码的分类数据吗?

graphviz可以显示一次解码的分类数据吗?
EN

Stack Overflow用户
提问于 2019-03-13 04:13:03
回答 1查看 744关注 0票数 4

我试图让Graphviz显示我的oneHotEncoded分类数据,但我不能让它工作。

以下是我的X数据和这些列:

代码语言:javascript
复制
Category, Size, Type, Rating, Genre, Number of versions   

['ART_AND_DESIGN' '6000000+' 'Free' 'Everyone' 'Art & Design' '7']  
['ART_AND_DESIGN' '6000000+' 'Free' 'Everyone' 'Art & Design' '2']  

...   
['FAMILY' '20000000+' 'Free' 'Everyone' 'Art & Design' '13']

和我的代码示例:

代码语言:javascript
复制
X = self.df.drop(['Installs'], axis=1).values
y = self.df['Installs'].values

self.oheFeatures = OneHotEncoder(categorical_features='all')
EncodedX = self.oheFeatures.fit_transform(X).toarray()

self.oheY = OneHotEncoder()
EncodedY = self.oheY.fit_transform(y.reshape(-1,1)).toarray()

self.X_train, self.X_test, self.y_train, self.y_test = train_test_split(EncodedX, EncodedY, test_size=0.25, random_state=33)

clf = DecisionTreeClassifier(criterion='entropy', min_samples_leaf=100)
clf.fit(self.X_train, self.y_train)
    
tree.export_graphviz(clf, out_file=None, 
            feature_names=self.oheFeatures.get_feature_names(),
            class_names=self.oheY.get_feature_names(),
            filled=True, 
            rounded=True,  
            special_characters=True)  

Dot_data = tree.export_graphviz(clf, out_file=None) 
    graph = graphviz.Source(dot_data) 
    graph.render("applications") 

但是当我尝试可视化输出结果时,我得到了编码数据的决策树:

有没有办法让graphviz显示“解码”的数据呢?

EN

回答 1

Stack Overflow用户

发布于 2020-09-13 10:47:55

@desertnaut是正确的,没有快速简单的方法来做到这一点,因为sklearn中的模型将二进制伪变量与任何其他实值功能完全相同地对待。

但是,至少在您的简单情况下(其中所有功能都是一次性编码的),这并不是很难实现。首先,您可以向get_feature_names提供input_feature_names,以便功能名称比X[34]更有用。接下来,export_graphviz的输出是点代码,它是人类可读的,因此也是人类可编辑的。在像您这样的小示例中,您可以完全手工完成;在较大的示例中,您可能希望使用regex替换或类似的东西。

我将a notebook放在一起来演示这一点,一次是在非常简单的情况下,一次是在稍微复杂的情况下。我考虑过修补export_graphviz方法的某些部分,但最终只是在事后修改了点代码。当sklearn完成对保留特征名称的方法的决定和实现(或者至少完成了对所有转换器的get_feature_names方法的充实)时,第二个示例应该适用于更复杂的转换器管道/组合。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55129963

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档