# 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):
- random_state = check_random_state(self.random_state)
- check_input :检查X和y
- 位置:/../utils/validation.py
- Input validation on an array, list, sparse matrix or similar
- n_samples, self.n_features_ = X.shape 样本个数 * 特征个数
- is_classification 分类标记
- if is_classification:获取clssess_,n_classes_; expanded_class_weight
- max_depth(默认值:2^32 - 1)、max_leaf_nodes(-1):初始化
- min_samples_leaf(默认值 >1 || (0, 0.5]):初始化
- min_samples_split(默认值 > 1 || (0, 1.0]):初始化
- max_features(范围:auto(分类使用)、sqrt、log2):初始化
- sample_weight:初始化
- min_weight_leaf:初始化
- min_impurity_split:初始化
- np.asfortranarray:将输入转换为具有列主存储器顺序的ndarray
- Build tree:
- CRITERIA_CLF:分类,gini和entropy
- CRITERIA_REG:回归,mse、friedman_mse和mae
- 根据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:需看源码才知道第一个数字代表的含义)