决策树 - Scikit,Python

Decision Trees - Scikit, Python

我正在尝试根据一些训练数据创建决策树。我以前从未创建过决策树,但已经完成了一些线性回归模型。我有 3 个问题:

  1. 通过线性回归,我发现以迭代方式绘制图表、拟合模型、分组因子水平、检查 P 统计等相当容易,直到我最终得到一个好的预测模型。我不知道如何评估决策树。有没有办法获得模型的摘要(例如,statsmodels 中的 .summary() 函数)?这应该是一个迭代过程,我决定一个因素是否重要 - 如果是,我怎么知道?

  2. 我在可视化决策树方面一直很不成功。在我尝试过的各种不同方式中,代码似乎 运行 没有任何错误,但没有出现/绘图。我唯一能成功的是 tree.export_text(model),它只是声明 feature_1、feature_2,等等。我不知道这些功能实际上是什么。有人在可视化方面遇到过这些困难/有简单的解决方案吗?

  3. 我生成的混淆矩阵如下:

    [[   0  395]
     [   0 3319]]
    

即该模型将所有行预测为相同的结果。有谁知道为什么会这样?

  1. Scikit-learn 是一个旨在构建预测模型的库,因此没有显着性检验、置信区间等。您始终可以构建自己的统计数据,但这是一个乏味的过程。在 scikit-learn 中,您可以使用 RFE、RFECV 等递归地消除特征。您可以找到 feature selection algorithms here. For the most part, these algorithms get rid off the least important feature in each loop according to feature_importances 的列表(其中每个特征的重要性定义为它对减少熵、基尼系数等的贡献。 ).

  2. visualize a tree最直接的方法是tree.plot_tree()。特别是,您应该尝试将特征的名称传递给 feature_names。如果您想要更具体的答案,请向我们展示您到目前为止所做的尝试。

  3. 尝试另一个 criterion,设置更高的 max_depth,等等。有时数据集有无法识别的记录。例如,两个观察值在所有特征中具有完全相同的值,但目标标签不同。你的数据集中是这种情况吗?