• Decision Tree


    Decision Tree

    sklearn API

    sklearn.tree.DecisionTreeClassifier(底层封装是二叉树,所以没有信息增益率没关系了)

    1. criterion{“gini”, “entropy”, “log_loss”}, default=”gini”. 基尼系数和信息增益(比起基尼系数,信息熵对不纯度更加敏感,对不纯度的惩罚最强。但在实际使用中,信息熵和基尼系数的效果基本相同。
      同时,因为信息熵对不纯度更加敏感,所以信息熵作为指标时,决策树的生长会更加“精细”,因此对于高维数据或者噪音很多的数据,信息熵很容易过拟合,基尼系数在这种情况下效果往往会更好。)
    2. splitter{“best”, “random”}, default=”best”
    3. max_depth int, default=None 树的最大深度
    4. min_samples_split int or float, default=2. 每个分支最少包含多少样本,节点切分,该节点最少包含2个样本
    5. min_samples_leaf int or float, default=1 叶子结点最少要1个样本
    6. min_weight_fraction_leaf float, default=0.0。 样本数占所有样本的比例
    7. max_features int, float or {“auto”, “sqrt”, “log2”}, default=None 寻找最佳分割时要考虑的特征数量:
    8. random_state int, RandomState instance or None, default=None
    9. max_leaf_nodes int, default=None 叶子结点的数量
    10. min_impurity_decrease float, default=0.0 如果该分裂导致杂质减少大于或等于该值,则该节点将被分裂。不存度减小的幅度
    11. class_weight dict, list of dict or “balanced”, default=None 类关联的权重。如果没有,所有的类都应该有一个权重。
    12. ccp_alpha non-negative float, default=0.0 用于最小成本复杂度修剪的复杂度参数。

    属性

    • classes_ndarray形状 (n_classes,) 或 ndarray 列表
      类标签(单输出问题),或类标签数组列表(多输出问题)。
    • feature_importances_ndarray 形状 (n_features,)
      返回特征重要性。
    • max_features_int _
      max_features 的推断值。
    • n_classes_ int 或 int 列表
      类数(对于单输出问题),或包含每个输出的类数的列表(对于多输出问题)。
    • n_features_整数
      已弃用:该属性n_features_在 1.0 中已弃用,并将在 1.2 中删除。
    • n_features_in_ int
      拟合期间看到的特征数。
    • feature_names_in_ ndarray 的形状 ( n_features_in_,)
      拟合期间看到的特征名称。仅当X 具有全为字符串的特征名称时才定义。
    • n_outputs_int _
      执行时的输出数fit。
    • tree_树实例
      基础树对象。请参阅 help(sklearn.tree._tree.Tree)树对象的属性和 了解决策树结构 以了解这些属性的基本用法。

    前剪枝
    max_depth等参数 。。。。

    后减枝
    REP-错误率代价减枝
    PEP-悲观减枝
    CCP-代价复杂度减枝

    sklearn.tree.DecisionTreeRegressor

    1. criterion{“squared_error”, “friedman_mse”, “absolute_error”, “poisson”}, default=”squared_error”。 friedman_mse: 左子树的方差与右子树的方差之和
    2. splitter
    3. max_depth
    4. min_samples_split
    5. min_samples_leaf
    6. min_weight_fraction_leaf
    7. max_features
    8. random_state
    9. max_leaf_nodes
    10. min_impurity_decrease
    11. ccp_alpha

    属性

    • classes_ndarray形状 (n_classes,) 或 ndarray 列表
      类标签(单输出问题),或类标签数组列表(多输出问题)。
    • feature_importances_ndarray 形状 (n_features,)
      返回特征重要性。
    • max_features_int _
      max_features 的推断值。
    • n_classes_ int 或 int 列表
      类数(对于单输出问题),或包含每个输出的类数的列表(对于多输出问题)。
    • n_features_整数
      已弃用:该属性n_features_在 1.0 中已弃用,并将在 1.2 中删除。
    • n_features_in_ int
      拟合期间看到的特征数。
    • feature_names_in_ ndarray 的形状 ( n_features_in_,)
      拟合期间看到的特征名称。仅当X 具有全为字符串的特征名称时才定义。
    • n_outputs_int _
      执行时的输出数fit。
    • tree_树实例
      基础树对象。请参阅 help(sklearn.tree._tree.Tree)树对象的属性和 了解决策树结构 以了解这些属性的基本用法。

    优点:
    1.决策过程接近人的思维习惯。
    12. 模型容易解释,比线性模型具有更好的解释性。
    13. 能清楚地使用图形化描述模型。
    14. 处理定型特征比较容易

    代码

    from __future__ import print_function, annotations
    import os
    
    import pandas as pd
    from sklearn.model_selection import train_test_split
    from sklearn import tree
    
    ## 加载数据
    data_file = os.path.join(os.path.dirname(__file__), "../datasets/titanic/train_process.csv")
    df = pd.read_csv(data_file)
    df["Sex"] = df["Sex"].map({"female":0, "male":1})
    X = df.drop(["Survived"], axis=1)
    y = df["Survived"]
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1, random_state=1314)
    
    print(X_train.shape, X_test.shape, y_train.shape, y_test.shape)
    ## 训练
    
    clf = tree.DecisionTreeClassifier() #实例化
    clf = clf.fit(X_train,y_train)#用训练集数据训练模型
    result = clf.score(X_test, y_test)#导入测试集,从接口中调用需要的信息
    print("result:", result)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
  • 相关阅读:
    C++与OPENCV实战学习
    [管理与领导-112]:IT人看清职场中的隐性规则 - 9 - 付出与回报的关系:先付出,后回报,不行就止损,这才是职场价值交换的本质
    如何使用 js 过滤文本框表情符号
    [MySQL]存储引擎、索引、SQL优化
    深入理解指针:【探索指针的高级概念和应用二】
    pycharm+anaconda
    环境规制指数,两种测算方法,整理好的面板数据
    TiDB数据库架构——TiDB Server
    Java 理论测试
    基于OpenAPI、freemarker动态生成swagger文档
  • 原文地址:https://blog.csdn.net/weixin_42486623/article/details/119121036