sklearn中决策树模型中的一些参数的解释

scikit-learn中有两类决策树,它们均采用优化的CART决策树算法。
from sklearn.tree import DecisionTreeRegressor

回归决策树

DecisionTreeRegressor(criterion=“mse”,
splitter=“best”,
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.,
max_features=None,
random_state=None,
max_leaf_nodes=None,
min_impurity_decrease=0.,
min_impurity_split=None,
presort=False)
参数含义
1.criterion:string, optional (default=“mse”)
它指定了切分质量的评价准则。默认为’mse’(mean squared error)。

2.splitter:string, optional (default=“best”)
它指定了在每个节点切分的策略。有两种切分策咯:
(1).splitter=‘best’:表示选择最优的切分特征和切分点。
(2).splitter=‘random’:表示随机切分。

3.max_depth:int or None, optional (default=None)
指定树的最大深度。如果为None,则表示树的深度不限,直到
每个叶子都是纯净的,即叶节点中所有样本都属于同一个类别,
或者叶子节点中包含小于min_samples_split个样本。

4.min_samples_split:int, float, optional (default=2)
整数或者浮点数,默认为2。它指定了分裂一个内部节点(非叶子节点)
需要的最小样本数。如果为浮点数(0到1之间),最少样本分割数为ceil(min_samples_split * n_samples)

5.min_samples_leaf:int, float, optional (default=1)
整数或者浮点数,默认为1。它指定了每个叶子节点包含的最少样本数。
如果为浮点数(0到1之间),每个叶子节点包含的最少样本数为ceil(min_samples_leaf * n_samples)

6.min_weight_fraction_leaf:float, optional (default=0.)
它指定了叶子节点中样本的最小权重系数。默认情况下样本有相同的权重。

7.max_feature:int, float, string or None, optional (default=None)
可以是整数,浮点数,字符串或者None。默认为None。
(1).如果是整数,则每次节点分裂只考虑max_feature个特征。
(2).如果是浮点数(0到1之间),则每次分裂节点的时候只考虑int(max_features * n_features)个特征。
(3).如果是字符串’auto’,max_features=n_features。
(4).如果是字符串’sqrt’,max_features=sqrt(n_features)。
(5).如果是字符串’log2’,max_features=log2(n_features)。
(6).如果是None,max_feature=n_feature。

8.random_state:int, RandomState instance or None, optional (default=None)
(1).如果为整数,则它指定了随机数生成器的种子。
(2).如果为RandomState实例,则指定了随机数生成器。
(3).如果为None,则使用默认的随机数生成器。

9.max_leaf_nodes:int or None, optional (default=None)
(1).如果为None,则叶子节点数量不限。
(2).如果不为None,则max_depth被忽略。

10.min_impurity_decrease:float, optional (default=0.)
如果节点的分裂导致不纯度的减少(分裂后样本比分裂前更加纯净)大于或等于min_impurity_decrease,则分裂该节点。
个人理解这个参数应该是针对分类问题时才有意义。这里的不纯度应该是指基尼指数。
回归生成树采用的是平方误差最小化策略。分类生成树采用的是基尼指数最小化策略。
加权不纯度的减少量计算公式为:
min_impurity_decrease=N_t / N * (impurity - N_t_R / N_t * right_impurity
- N_t_L / N_t * left_impurity)
其中N是样本的总数,N_t是当前节点的样本数,N_t_L是分裂后左子节点的样本数,
N_t_R是分裂后右子节点的样本数。impurity指当前节点的基尼指数,right_impurity指
分裂后右子节点的基尼指数。left_impurity指分裂后左子节点的基尼指数。

11.min_impurity_split:float
树生长过程中早停止的阈值。如果当前节点的不纯度高于阈值,节点将分裂,否则它是叶子节点。
这个参数已经被弃用。用min_impurity_decrease代替了min_impurity_split。
12.presort: bool, optional (default=False)
指定是否需要提前排序数据从而加速寻找最优切分的过程。设置为True时,对于大数据集
会减慢总体的训练过程;但是对于一个小数据集或者设定了最大深度的情况下,会加速训练过程。

属性:
1.feature_importances_ : array of shape = [n_features]
特征重要性。该值越高,该特征越重要。
特征的重要性为该特征导致的评价准则的(标准化的)总减少量。它也被称为基尼的重要性
2.max_feature_:int
max_features推断值。
3.n_features_:int
执行fit的时候,特征的数量。
4.n_outputs_ : int
执行fit的时候,输出的数量。
5.tree_ : 底层的Tree对象。
Notes:
控制树大小的参数的默认值(例如max_depthmin_samples_leaf等)导致完全成长和未剪枝的树,
这些树在某些数据集上可能表现很好。为减少内存消耗,应通过设置这些参数值来控制树的复杂度和大小。
方法:
1.fit(X,y):训练模型。
2.predict(X):预测。
‘’’

from sklearn.tree import DecisionTreeClassifier

分类决策树

DecisionTreeClassifier(criterion=“gini”,
splitter=“best”,
max_depth=None,
min_samples_split=2,
min_samples_leaf=1,
min_weight_fraction_leaf=0.,
max_features=None,
random_state=None,
max_leaf_nodes=None,
min_impurity_decrease=0.,
min_impurity_split=None,
class_weight=None,
presort=False)

参数含义
1.criterion:string, optional (default=“gini”)
(1).criterion=‘gini’,分裂节点时评价准则是Gini指数。
(2).criterion=‘entropy’,分裂节点时的评价指标是信息增益。

2.max_depth:int or None, optional (default=None)。指定树的最大深度。
如果为None,表示树的深度不限。直到所有的叶子节点都是纯净的,即叶子节点
中所有的样本点都属于同一个类别。或者每个叶子节点包含的样本数小于min_samples_split。

3.splitter:string, optional (default=“best”)。指定分裂节点时的策略。
(1).splitter=‘best’,表示选择最优的分裂策略。
(2).splitter=‘random’,表示选择最好的随机切分策略。

4.min_samples_split:int, float, optional (default=2)。表示分裂一个内部节点需要的做少样本数。
(1).如果为整数,则min_samples_split就是最少样本数。
(2).如果为浮点数(0到1之间),则每次分裂最少样本数为ceil(min_samples_split * n_samples)

5.min_samples_leaf: int, float, optional (default=1)。指定每个叶子节点需要的最少样本数。
(1).如果为整数,则min_samples_split就是最少样本数。
(2).如果为浮点数(0到1之间),则每个叶子节点最少样本数为ceil(min_samples_leaf * n_samples)

6.min_weight_fraction_leaf:float, optional (default=0.)
指定叶子节点中样本的最小权重。

7.max_features:int, float, string or None, optional (default=None).
搜寻最佳划分的时候考虑的特征数量。
(1).如果为整数,每次分裂只考虑max_features个特征。
(2).如果为浮点数(0到1之间),每次切分只考虑int(max_features * n_features)个特征。
(3).如果为’auto’或者’sqrt’,则每次切分只考虑sqrt(n_features)个特征
(4).如果为’log2’,则每次切分只考虑log2(n_features)个特征。
(5).如果为None,则每次切分考虑n_features个特征。
(6).如果已经考虑了max_features个特征,但还是没有找到一个有效的切分,那么还会继续寻找
下一个特征,直到找到一个有效的切分为止。

8.random_state:int, RandomState instance or None, optional (default=None)
(1).如果为整数,则它指定了随机数生成器的种子。
(2).如果为RandomState实例,则指定了随机数生成器。
(3).如果为None,则使用默认的随机数生成器。

9.max_leaf_nodes: int or None, optional (default=None)。指定了叶子节点的最大数量。
(1).如果为None,叶子节点数量不限。
(2).如果为整数,则max_depth被忽略。

10.min_impurity_decrease:float, optional (default=0.)
如果节点的分裂导致不纯度的减少(分裂后样本比分裂前更加纯净)大于或等于min_impurity_decrease,则分裂该节点。
加权不纯度的减少量计算公式为:
min_impurity_decrease=N_t / N * (impurity - N_t_R / N_t * right_impurity
- N_t_L / N_t * left_impurity)
其中N是样本的总数,N_t是当前节点的样本数,N_t_L是分裂后左子节点的样本数,
N_t_R是分裂后右子节点的样本数。impurity指当前节点的基尼指数,right_impurity指
分裂后右子节点的基尼指数。left_impurity指分裂后左子节点的基尼指数。

11.min_impurity_split:float
树生长过程中早停止的阈值。如果当前节点的不纯度高于阈值,节点将分裂,否则它是叶子节点。
这个参数已经被弃用。用min_impurity_decrease代替了min_impurity_split。

12.class_weight:dict, list of dicts, “balanced” or None, default=None
类别权重的形式为{class_label: weight}
(1).如果没有给出每个类别的权重,则每个类别的权重都为1。
(2).如果class_weight=‘balanced’,则分类的权重与样本中每个类别出现的频率成反比。
计算公式为:n_samples / (n_classes * np.bincount(y))
(3).如果sample_weight提供了样本权重(由fit方法提供),则这些权重都会乘以sample_weight。

13.presort:bool, optional (default=False)
指定是否需要提前排序数据从而加速训练中寻找最优切分的过程。设置为True时,对于大数据集
会减慢总体的训练过程;但是对于一个小数据集或者设定了最大深度的情况下,会加速训练过程。

属性:
1.classes_:array of shape = [n_classes] or a list of such arrays
类别的标签值。
2.feature_importances_ : array of shape = [n_features]
特征重要性。越高,特征越重要。
特征的重要性为该特征导致的评价准则的(标准化的)总减少量。它也被称为基尼的重要性
3.max_features_ : int
max_features的推断值。
4.n_classes_ : int or list
类别的数量
5.n_features_ : int
执行fit后,特征的数量
6.n_outputs_ : int
执行fit后,输出的数量
7.tree_ : Tree object
树对象,即底层的决策树。
方法:
1.fit(X,y):训练模型。
2.predict(X):预测
3.predict_log_poba(X):预测X为各个类别的概率对数值。
4.predict_proba(X):预测X为各个类别的概率值。
转自:https://blog.csdn.net/qq_16000815/article/details/80954039

  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这是一个二进制编码的字符串,需要使用解码方法将其转化为文。如果使用的是Python编程语言,可以使用decode()函数将其转化为可读的文文本: b'\xe4\xbd\xbf\xe7\x94\xa8sklearn\xe7\x9a\x84\xe5\x86\xb3\xe7\xad\x96\xe6\xa0\x91\xe6\xa8\xa1\xe5\x9e\x8b\xe5\x88\xa4\xe6\x96\xad\xe6\x98\xaf\xe5\x90\xa6\xe6\x98\xaf\xe5\x9e\x83\xe5\x9c\xbe\xe9\x82\xae\xe4\xbb\xb6'.decode() 可以得到以下文文本: 使用sklearn决策树模型判断是否是垃圾邮件。 ### 回答2: 随着互联网的普及,垃圾邮件的问题越来越严重。随着信息技术的进步,使用机器学习来识别垃圾邮件的任务变得相对容易。在这篇文章,我们将讨论如何用sklearn决策树模型判断是否是垃圾邮件。 首先,我们需要搜集数据集。可以从网络上获取现有的垃圾邮件和非垃圾邮件样本数据集。在搜集完数据后,我们需要对数据进行预处理和分析,包括数据清理、数据整理和数据编码等。 接下来,利用python编程语言,使用sklearn库建立决策树分类器模型。首先,我们需要导入所需的库和数据集,并将数据集分为训练集和测试集。然后,我们需要对数据进行特征提取和特征选择,具体做法包括:对数据进行标准化处理,特征离散化和特征化简等等。最后,我们需要用训练集来训练模型,并用测试集来测试模型的准确性。 在模型训练完成后,我们需要对模型进行评估,包括计算模型的准确率、精确率和召回率等重要指标。如果模型的表现不好,则需要重新调整模型参数或者重新处理数据集,以提高模型的准确性和可靠性。 最后,我们可以使用模型来判断是否是垃圾邮件。当有新的邮件到达时,我们可以将邮件的相关特征送入模型模型将根据先前已经判断好的数据进行分类预测,并判断该邮件是否是垃圾邮件。如果是,则可以将邮件删除或者移动到垃圾箱。如果不是,则可以将邮件保留在收件箱。 总之,使用sklearn决策树模型判断是否是垃圾邮件,需要我们搜集数据集,进行数据预处理和分析,建立模型并进行训练评估,最后利用模型对新邮件进行分类预测。在实际应用过程,还需适当调整模型参数和数据集,以提高模型的准确性和可靠性。 ### 回答3: 决策树是一种基于树形结构来进行决策的分类算法,它是一个基于特征选择的有监督学习算法。使用sklearn决策树模型判断是否是垃圾邮件的过程可以分为以下几个步骤: 1. 数据准备:收集代表邮件属性的样本数据集,并将其分为训练集和测试集。 2. 特征选择:根据统计学的标准,筛选出对邮件分类最具区分度的特征列表。例如:发件人、收件人、主题、内容、附件信息等。 3. 模型训练:使用sklearn决策树模型,将筛选出的特征列表作为输入,并对训练数据集进行学习,从而生成一个分类模型。 4. 模型评估:在测试数据集上对分类模型进行验证,计算模型的准确性、精确度、召回率等指标。 5. 模型应用:将邮件的特征数据输入到分类模型,根据模型输出的分类结果判断该邮件是否为垃圾邮件。 在决策树模型,节点是样本分割的规则,每个节点代表一个特征。我们需要选择一个合适的特征进行分割,使得分割后的样本更容易被区分。每次从候选特征集合选择一个最佳特征进行分裂,使得分割后的数据集更具纯度或信息增益更大。 在分类过程,我们需要根据分类模型输出的信息,对邮件进行分类。如果分类结果是垃圾邮件,则可以进行删除或移动到垃圾邮件箱。如果分类结果是正常邮件,则可以进行分类存档或转发等操作。 总之,使用sklearn决策树模型判断是否是垃圾邮件,是一种快捷有效的分类方法,可以通过不断优化特征选择和模型调整等方法,进一步提高分类模型的准确性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值