我正在使用Skleran的随机森林分类器。
我已经训练并调整了模型。

我的数据集包含40个样本,每个样本具有4个特征,并且我想在两个类别中对样本进行分类。

现在我的问题是:
我想保存由该模型形成的树,然后再次将其加载到另一个脚本中进行预测。

注意-我知道joblib和pickle模块,它们将模型保存在“ .sav”文件中,但是我不想保存该模型实例。

通过使用sklearns的“ tree.export_graphviz”,我发现了一种非常有趣的方法。这是我用来保存树的代码:

from sklearn.ensemble import RandomForestClassifier
from sklearn.tree import export_graphviz

model=RandomForestClassifier()
model.fit(X, Y)

i_tree=0
for tree in model.estimators_:
    with open('iris_tree_' + str(i_tree) + '.dot', 'w') as my_file:
        my_file = export_graphviz(tree, out_file = my_file)
    i_tree = i_tree + 1


我面临的问题是如何使用这些树进行预测?

保存的文件包含以下格式的树:

digraph Tree {
node [shape=box] ;
0 [label="X[3] <= 0.4\ngini = 0.4387\nsamples = 20\nvalue = [27, 13]"] ;
1 [label="gini = 0.0\nsamples = 7\nvalue = [0, 13]"] ;
0 -> 1 [labeldistance=2.5, labelangle=45, headlabel="True"] ;
2 [label="gini = 0.0\nsamples = 13\nvalue = [27, 0]"] ;
0 -> 2 [labeldistance=2.5, labelangle=-45, headlabel="False"] ;
}


可以使用graphviz的在线门户将数据转换为树。

转换后的数据看起来像this

如何解析此类数据?

我最感兴趣的是树的每个块中的那些“ X [3]

最佳答案

如果确实是您要查找的小片段,则可以考虑使用正则表达式,例如:

\D\[\d+\]\s+<=\s+\d+\.\d+


也就是说,“非数字字符,方括号,某些数字,方括号,空格,

关于python - 从随机森林获取树木,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45187977/

10-11 08:34