美文网首页
算法笔记(8)-决策树算法及Python代码实现

算法笔记(8)-决策树算法及Python代码实现

作者: 编程研究坊 | 来源:发表于2022-05-15 12:27 被阅读0次

    决策树既可以用于分类也可以用于回归,它的原理是通过对一系列问题进行if/else推导,最终实现决策。

    决策树优点

    (1)可以将模型进行可视化
    (2)决策树对每个样本特征进行单独处理,不需要对数据进行转换

    决策树缺点

    (1)会出现过拟合问题

    决策树算法Python代码实现

    clf3 = tree.DecisionTreeClassifier(max_depth=5)
    clf3.fit(X_train,y_train)
    #定义图像中分区的颜色和散点的颜色
    cmap_light = ListedColormap(['#FFAAAA', '#AAFFAA', '#AAAAFF'])
    cmap_bold = ListedColormap(['#FF0000', '#00FF00', '#0000FF'])
    
    #分别用样本的两个特征值创建图像和横轴和纵轴
    x_min, x_max = X_train[:, 0].min() - 1, X_train[:, 0].max() + 1
    y_min, y_max = X_train[:, 1].min() - 1, X_train[:, 1].max() + 1
    xx, yy = np.meshgrid(np.arange(x_min, x_max, .02),
                         np.arange(y_min, y_max, .02))
    Z = clf3.predict(np.c_[xx.ravel(), yy.ravel()])
    
    #给每个分类中的样本分配不同的颜色
    Z = Z.reshape(xx.shape)
    plt.figure()
    plt.pcolormesh(xx, yy, Z, cmap=cmap_light)
    
    #用散点把样本表示出来
    plt.scatter(X[:, 0], X[:, 1], c=y, cmap=cmap_bold, edgecolor='k', s=20)
    plt.xlim(xx.min(), xx.max())
    plt.ylim(yy.min(), yy.max())
    plt.title("Classifier:(max_depth = 5)")
    
    plt.show()
    

    决策树分类结果如下图


    决策树分类结果

    graphviz可帮助演示决策树的工作过程

    python代码实现

    import graphviz
    from sklearn.tree import export_graphviz
    export_graphviz(clf2, out_file="wine.dot", class_names=wine.target_names,
    feature_names=wine.feature_names[:2], impurity=False, filled=True)
    with open("wine.dot") as f:
        dot_graph = f.read()
    graphviz.Source(dot_graph)
    

    输出结果如下图


    决策树工作过程可视化图

    想要完整代码的朋友,可toutiao号搜索“编程研究坊”关注私信我,回复“算法笔记8“免费获取

    相关文章

      网友评论

          本文标题:算法笔记(8)-决策树算法及Python代码实现

          本文链接:https://www.haomeiwen.com/subject/xknvurtx.html