BaseDecisionTree源码阅读

# init:参数

criterion:特征选择方法,包含信息熵、gini;
splitter:选择特征的方式,best:所有特征中最好的;random:部分随机特征中选择最好的;
max_depth:树的最大深度,超过的将会剪枝;
min_samples_split:分裂最小样本个数,不满足条件不进行分枝;
min_samples_leaf:分裂后的最小样本个数,小于的则进行剪枝;
min_weight_fraction_leaf:叶子节点全部样本权重和的最小值,若是小于这个值,则会被剪枝
max_features:划分数据集时考虑的最多特征值数量
random_state : 固定测试集和训练集划分
max_leaf_nodes:最大叶子节点数量;
min_impurity_decrease:节点划分最小不纯度(gini);
min_impurity_split:信息增益的阈值,小于阈值不进行分裂
class_weight:类别权重,dict:样本各类别权重;
presort:对数据进行排序,加速树的构建

# fit(self, X, y, sample_weight=None, check_input=True, X_idx_sorted=None):

  1. random_state = check_random_state(self.random_state)
  2. check_input :检查X和y
    1. 位置:/../utils/validation.py
    2. Input validation on an array, list, sparse matrix or similar
  3. n_samples, self.n_features_ = X.shape 样本个数 * 特征个数
  4. is_classification 分类标记
  5. if is_classification:获取clssess_,n_classes_; expanded_class_weight
  6. max_depth(默认值:2^32 - 1)、max_leaf_nodes(-1):初始化
  7. min_samples_leaf(默认值 >1 || (0, 0.5]):初始化
  8. min_samples_split(默认值 > 1 || (0, 1.0]):初始化
  9. max_features(范围:auto(分类使用)、sqrt、log2):初始化
  10. sample_weight:初始化
  11. min_weight_leaf:初始化
  12. min_impurity_split:初始化
  13. np.asfortranarray:将输入转换为具有列主存储器顺序的ndarray
  14. Build tree:
    1. CRITERIA_CLF:分类,gini和entropy
    2. CRITERIA_REG:回归,mse、friedman_mse和mae
  15. 根据max_leaf_nodes选择DepthFirstTreeBuilder(max_leaf_nodes < 0,没有限制)、BestFirstTreeBuilder(有限制)

#深度优先树

DepthFirstTreeBuilder:栈

#广度优先树

BestFirstTreeBuilder:优先队列

#predict(self, X, check_input=True)

1._validate_X_predict

2.Classification:返回np.argmax结果;

3.Regression:返回所有结果的第一个数字(ps:需看源码才知道第一个数字代表的含义)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值