我喜欢Dtreeviz库 - GitHub提供的决策树可视化,可以使用它来复制
# Install libraries
!pip install dtreeviz
!apt-get install graphviz
# Sample code
from sklearn.datasets import *
from sklearn import tree
from dtreeviz.trees import *
from IPython.core.display import display, HTML
classifier = tree.DecisionTreeClassifier(max_depth=4)
cancer = load_breast_cancer()
classifier.fit(cancer.data, cancer.target)
viz = dtreeviz(classifier,
cancer.data,
cancer.target,
target_name='cancer',
feature_names=cancer.feature_names,
class_names=["malignant", "benign"],
fancy=False)
display(HTML(viz.svg()))
然而,当我将上述方法应用于我自己制作的决策树时,代码崩溃了,因为我的数据存储在pandas DF(或np数组)中,而不是scikit-learn的bunch对象中。
现在,在Sci-kit learn - How to create a Bunch object 上,他们严厉警告我不要尝试创建bunch对象;但我也没有将我的DF或NP数组转换为上面的可视化函数所接受的内容的技能。
我们可以假设我的DF有九个特征和一个目标,称为“Feature01”,“Feature02”等和“Target01”。
这通常是我会这样拆分的。
FeatDF = FullDF.drop( columns = ["Target01"])
LabelDF = FullDF["Target01"]
然后我愉快地开始分配分类器,或者如果是为了机器学习,则创建测试/训练拆分。但这些对于调用dtreeviz没有帮助 - 它需要像“feature_names”这样的内容(我认为这是“bunch”对象中包含的内容)。由于我无法将DF转换为bunch,所以我陷入了困境。请给我带来智慧。更新:我想任何简单的DF都可以说明我的难题。我们可以试一下。
import pandas as pd
Things = {'Feature01': [3,4,5,0],
'Feature02': [4,5,6,0],
'Feature03': [1,2,3,8],
'Target01': ['Red','Blue','Teal','Red']}
DF = pd.DataFrame(Things,
columns= ['Feature01', 'Feature02',
'Feature02', 'Target01'])
作为一个例子 DF。现在,我会去吗?
DataNP = DF.to_numpy()
classifier.fit(DF.data, DF.target)
feature_names = ['Feature01', 'Feature02', 'Feature03']
#..and what if I have 50 features...
viz = dtreeviz(classifier,
DF.data,
DF.target,
target_name='Target01',
feature_names=feature_names,
class_names=["Red", "Blue", "Teal"],
fancy=False)
或者这很愚蠢吗?到目前为止,感谢您的指导!