我正在使用python的pydot和graphviz软件包来绘制决策树。就像在R中,我们可以使用离散值来显示绘图,但是在这里我正在解决连续变量问题。是否还有其他软件包可以帮助我获得相似的绘图像R中那样,在节点中具有离散值而不是连续的分类变量。
使用分类变量构建具有10个自变量和目标变量的决策树,我将所有分类变量进行装仓并使用一种热编码将其转换为数值变量,然后使用pydot和graphviz绘制树。我需要它像R一样,而不是在连续数据上拆分显示/完成的节点,我希望它是在我创建的列中的离散值上完成的。 到现在为止。是否有其他方法可以解决该绘图问题。
def weight_bin(x):
if x>50:
type="Greaterthan50"
elif 35< x <= 50:
type="Between 35-50"
elif 20< x <=35:
type="Between 20-35"
elif 0<x<=20:
type="Less than 20"
else:
type="Ignore"
return type
list_name1=list(map(weight_bin,data.WEIGHT_KG))
data['Weight_Bin']=list_name1
情节部分
feature_cols = ['ISO_COUNTRY_CODE', 'NAS_GT_2', 'INFEED_NAME', 'PRODUCT_CODE_PNL_new','Barcode_Read','Barcode_Valid','EDI_Available','Scanning Method','Sorting_Type','Weight_Bin','NO_ADDED_SERVICES_new']
X = data_subset[feature_cols] # Features
y = data_subset.Rejection_Flag # Target variable
dtree=DecisionTreeClassifier(criterion = "gini", random_state = 100,
max_depth=8, min_samples_leaf=4)
one_hot_data = pd.get_dummies(X,drop_first=True)
clf =dtree.fit(one_hot_data, y)
target_names=list(data_subset.Rejection_Flag.unique())
dot_data = tree.export_graphviz(clf, out_file=None,
feature_names=one_hot_data.columns,
class_names=target_names)
# Draw graph
graph = pydotplus.graph_from_dot_data(`enter code here`dot_data)
# Show graph
Image(graph.create_png())
graph.write_png("tree5.png")