精华内容
下载资源
问答
  • min_weight_fraction_leaf:基于权重的剪枝参数 有了权重之后,样本量就不再是单纯地记录数目,而是受输入的权重影响了;min_weight_ fraction_leaf 将比参数 min_samples_leaf 更少偏向主导类。 如果样本是...

    刚刚使用SKLearn学习机器学习进行数据分析,分享一些概念和想法,希望可以大家一起讨论,如果理解或者表达有不准确的地方,请多多指点,不吝赐教,非常感谢~~

    本文将继续介绍sklearn的决策树模块的其他参数

    涉及决策树其他参数:
    请转至《DecisionTreeClassifier的criterion参数 与 使用红酒数据集创建一个树)》:https://blog.csdn.net/weixin_42969619/article/details/98884082
    以及《sklearn的DecisionTreeClassifier的 random_state & splitter 参数》:
    https://blog.csdn.net/weixin_42969619/article/details/99301017
    以及《sklearn的DecisionTreeClassifier的5个剪枝参数》:


    • DecisionTreeClassifier及重要参数:

    class sklearn.tree.DecisionTreeClassifier (criterion=’gini’, splitter=’best’, max_depth=None,
    min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None,
    random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None,
    class_weight=None, presort=False)

    1. class_weight:平衡样本标签比例

    默认None,即函数自动给与数据集中的所有标签相同的权重。
    样本不平衡是指在一组数据集中,标签的一类天生占有很大的比例。分类结果就会受样本比例的影响,因此我们要使用class_weight参数对样本标签进行一定的均衡,给少量的标签更多的权重,让模型更偏向少数类,向捕获少数类的方向建模。

    1. min_weight_fraction_leaf:基于权重的剪枝参数

    有了权重之后,样本量就不再是单纯地记录数目,而是受输入的权重影响了;min_weight_
    fraction_leaf 将比参数 min_samples_leaf 更少偏向主导类。
    如果样本是加权的,则使用基于权重的预修剪标准来更容易优化树结构,这确保叶节点至少包含样本权重的总和的一小部分。

    展开全文
  • min_weight_fraction_leaf" is similar parameter from Sklearn); - minImpurityDecreaseInSplitNode ("min_impurity_decrease" is similar parameter from Sklearn); - maxLeafNodes ("max_leaf_...
  • weight parameters

    2020-11-29 09:33:03
    <div><p>I am doing Classification problem, and I have three labels, which are not ...Is this OK, or I should use fraction?</p><p>该提问来源于开源项目:ThilinaRajapakse/simpletransformers</p></div>
  • , var_export($weight, true), mb_strlen(mb_substr($weight, mb_strpos($weight, '.') + 1))), __LINE__); } </code></pre> <p>For any integer number <code>mb_strpos($weight, '.')...
  • <p>When creating a new variant it is not possible to set a fraction of the product's weight. Neither <code>0.5, nor <code>0,5</code> nor <code>500</code> show the right value in the variants list....
  • RPN_POSITIVE_WEIGHT': -1.0, 'RPN_POST_NMS_TOP_N': 2000, 'RPN_PRE_NMS_TOP_N': 12000, 'SCALES': [600], 'SNAPSHOT_ITERS': 5000, 'SNAPSHOT_KEPT': 3, '...
  • sklearn中决策树算法参数...classsklearn.tree.DecisionTreeClassifier(criterion=’gini’,splitter=’best’,max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0,max_featur...

    sklearn中决策树算法参数共有13个,如下:

    class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, class_weight=None, presort=False)

    英文文档在这:决策树参数

    • criterion:gini或者entropy,前者是基尼系数,后者是信息熵。两种算法差异不大对准确率无影响,信息墒运算效率低一点,因为它有对数运算.一般说使用默认的基尼系数”gini”就可以了,即CART算法。除非你更喜欢类似ID3, C4.5的最优特征选择方法。
    • splitter: best or random 前者是在所有特征中找最好的切分点 后者是在部分特征中,默认的”best”适合样本量不大的时候,而如果样本数据量非常大,此时决策树构建推荐”random” 。
    • max_features:None(所有),log2,sqrt,N  特征小于50的时候一般使用所有的。参考
    • max_depth:  int or None, optional (default=None) 一般来说,数据少或者特征少的时候可以不管这个值。如果模型样本量多,特征也多的情况下,推荐限制这个最大深度,具体的取值取决于数据的分布。常用的可以取值10-100之间。常用来解决过拟合
    • min_samples_split: 如果某节点的样本数少于min_samples_split,则不会继续再尝试选择最优特征来进行划分,如果样本量不大,不需要管这个值。如果样本量数量级非常大,则推荐增大这个值。
    • min_samples_leaf: 这个值限制了叶子节点最少的样本数,如果某叶子节点数目小于样本数,则会和兄弟节点一起被剪枝,如果样本量不大,不需要管这个值,大些如10W可是尝试下5
    • min_weight_fraction_leaf: 这个值限制了叶子节点所有样本权重和的最小值,如果小于这个值,则会和兄弟节点一起被剪枝默认是0,就是不考虑权重问题。一般来说,如果我们有较多样本有缺失值,或者分类树样本的分布类别偏差很大,就会引入样本权重,这时我们就要注意这个值了。
    • max_leaf_nodes: 通过限制最大叶子节点数,可以防止过拟合,默认是"None”,即不限制最大的叶子节点数。如果加了限制,算法会建立在最大叶子节点数内最优的决策树。如果特征不多,可以不考虑这个值,但是如果特征分成多的话,可以加以限制具体的值可以通过交叉验证得到。
    • class_weight: 指定样本各类别的的权重,主要是为了防止训练集某些类别的样本过多导致训练的决策树过于偏向这些类别。这里可以自己指定各个样本的权重,如果使用“balanced”,则算法会自己计算权重,样本量少的类别所对应的样本权重会高。
    • min_impurity_split: 这个值限制了决策树的增长,如果某节点的不纯度(基尼系数,信息增益,均方差,绝对差)小于这个阈值则该节点不再生成子节点。即为叶子节点 。

    模型调参注意事项:

    当样本少数量但是样本特征非常多的时候,决策树很容易过拟合,一般来说,样本数比特征数多一些会比较容易建立健壮的模型
    如果样本数量少但是样本特征非常多,在拟合决策树模型前,推荐先做维度规约,比如主成分分析(PCA),特征选择(Losso)或者独立成分分析(ICA)。这样特征的维度会大大减小。再来拟合决策树模型效果会好。
    推荐多用决策树的可视化,同时先限制决策树的深度(比如最多3层),这样可以先观察下生成的决策树里数据的初步拟合情况,然后再决定是否要增加深度。
    在训练模型先,注意观察样本的类别情况(主要指分类树),如果类别分布非常不均匀,就要考虑用class_weight来限制模型过于偏向样本多的类别。
    决策树的数组使用的是numpy的float32类型,如果训练数据不是这样的格式,算法会先做copy再运行。
    如果输入的样本矩阵是稀疏的,推荐在拟合前调用csc_matrix稀疏化,在预测前调用csr_matrix稀疏化。
    --------------------- 
    版权声明:本文为CSDN博主「碧空之戈」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_38923076/article/details/82931340

    展开全文
  • matplotlib调节colorbar的大小

    千次阅读 2020-10-24 16:59:50
    调节plt.colorbar的fraction系数即可调节colorbar的大小 weight = np.random.random([8, 8]) plt.imshow(weight) plt.colorbar(fraction=0.05, pad=0.05) plt.savefig('tjn.png', bbox_inches='tight') plt.show()

    调节plt.colorbar的fraction系数即可调节colorbar的大小

    weight = np.random.random([8, 8])
    plt.imshow(weight)
    plt.colorbar(fraction=0.05, pad=0.05)
    plt.savefig('tjn.png', bbox_inches='tight')
    plt.show()

     

    展开全文
  • def <strong>init(self, default_fraction=0.19): self.default_fraction = default_fraction <pre><code>def size_order(self, portfolio, initial_order): """ This ...
  • 1.0 / 9.0, loss_weight=1.0)), bbox_roi_extractor=dict( type='SingleRoIExtractor', roi_layer=dict(type='RoIAlign', out_size=7, sample_num=2), out_...
  • 机器学习-随机森林之回归

    万次阅读 2019-04-13 15:27:27
    一、随机森林之回归 ...class sklearn.ensemble.RandomForestRegressor (n_estimators=’warn’, criterion=’mse’, max_depth=None,min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0...

    一、随机森林之回归

    RandomForestRegressor
    class sklearn.ensemble.RandomForestRegressor (n_estimators=’warn’, criterion=’mse’, max_depth=None,min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’,max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False,n_jobs=None, random_state=None, verbose=0,warm_start=False)
    所有的参数,属性与接口,全部和随机森林分类器一致。仅有的不同就是回归树与分类树的不同,不纯度的指标,参数Criterion不一致
    1.1 重要参数,属性与接口
    criterion
    关于这以参数在随机森林的回归里和决策树回归是一样的,可以参见决策树之回归树的博客。最重要的属性和接口,都与随机森林的分类器相一致,还是apply, fit, predict和score最为核心。值得一提的是,随机森林回归并没有predict_proba这个接口,因为对于回归来说,并不存在一个样本要被分到某个类别的概率问题,因此没有predict_proba这个接口。
    随机森林回归用法和决策树完全一致,除了多了参数n_estimators

    from sklearn.datasets import load_boston
    from sklearn.model_selection import cross_val_score
    from sklearn.ensemble import RandomForestRegressor
    boston = load_boston()
    regressor = RandomForestRegressor(n_estimators=100,random_state=0)
    cross_val_score(regressor, boston.data, boston.target, cv=10
                   ,scoring = "neg_mean_squared_error")
    sorted(sklearn.metrics.SCORERS.keys())#sklearn当中的模型评估指标(打分)列表
    # scoring='neg_mean_squared_error'表示返回负的均方误差,如果不加上这个参数,返回的则是R**2
    

    均方误差的负数:

    array([-10.72900447,  -5.36049859,  -4.74614178, -20.84946337,
           -12.23497347, -17.99274635,  -6.8952756 , -93.78884428,
           -29.80411702, -15.25776814])
    

    部分指标:

    ['accuracy',
     'adjusted_mutual_info_score',
     'adjusted_rand_score',
     'average_precision',
     'balanced_accuracy',
     'brier_score_loss',
     'completeness_score',
     'explained_variance',
     'f1',
     'f1_macro',
     'f1_micro',
     'f1_samples',
     'f1_weighted',
     'fowlkes_mallows_score',
     'homogeneity_score',
     'mutual_info_score',
     'neg_log_loss',
    

    二、实例:用随机森林回归填补缺失值

    2.1导入相关的库

    # 1.#导入需要的库
    import numpy as np
    import pandas as pd
    import matplotlib.pyplot as plt
    from sklearn.datasets import load_boston
    from sklearn.impute import SimpleImputer
    from sklearn.ensemble import RandomForestRegressor#填补缺失值的类
    from sklearn.model_selection import  cross_val_score
    

    2.2导入波士顿的数据集

    boston=load_boston()
    boston.data.shape
    

    2.3为了不影响原始的数据集,可以先复制一份

    #总共506*13=6578个数据
    x_full,y_full=boston.data,boston.target
    n_samples=x_full.shape[0]
    n_features=x_full.shape[1]
    

    2.4下面为完整的数据集放入缺失值

    #首先确定我们希望放入的缺失数据的比例,在这里我们假设是50%,那总共就要有3289个数据缺失
    
    rng = np.random.RandomState(0)
    missing_rate = 0.5
    n_missing_samples = int(np.floor(n_samples * n_features * missing_rate))
    
    #np.floor向下取整,返回.0格式的浮点数
    #所有数据要随机遍布在数据集的各行各列当中,而一个缺失的数据会需要一个行索引和一个列索引
    #如果能够创造一个数组,包含3289个分布在0~506中间的行索引,和3289个分布在0~13之间的列索引,那我们就可以利用索引来为数据中的任意3289个位置赋空值,然后我们用0,均值和随机森林来填写这些缺失值,然后查看回归的结果如何
    
    missing_features = rng.randint(0,n_features,n_missing_samples)
    missing_samples = rng.randint(0,n_samples,n_missing_samples)
    #missing_samples = rng.choice(dataset.data.shape[0],n_missing_samples,replace=False)
    
    '''我们现在采样了3289个数据,远远超过我们的样本量506,所以我们使用随机抽取的函数randint。但如果我们需要的数据量小于我们的样本量506,那我们可以采用np.random.choice来抽样,choice会随机抽取不重复的随机数,因此可以帮助我们让数据更加分散,确保数据不会集中在一些行中
    '''
    x_missing = x_full.copy()
    y_missing = y_full.copy()
    x_missing[missing_samples,missing_features] = np.nan
    x_missing = pd.DataFrame(x_missing)
    
    #转换成DataFrame是为了后续方便各种操作,numpy对矩阵的运算速度快到拯救人生,但是在索引等功能上却不如pandas来得好用
    

    2.5、使用0和均值补全缺失值

    #使用均值进行填补
    from sklearn.impute import SimpleImputer
    imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')#实例化
    x_missing_mean = imp_mean.fit_transform(x_missing)
    #使用0进行填补
    imp_0 = SimpleImputer(missing_values=np.nan, strategy="constant",fill_value=0)
    x_missing_0 = imp_0.fit_transform(x_missing)
    #训练加导出等价于fit+predict>>>特殊接口fit_transfrom
    pd.DataFrame(x_missing_mean).isnull().sum()
    #查看是否还存在缺失值,说明缺失值已经全部填充了
    

    结果:

    0     0
    1     0
    2     0
    3     0
    4     0
    5     0
    6     0
    7     0
    8     0
    9     0
    10    0
    11    0
    12    0
    dtype: int64
    

    表示已经不存在缺失值了
    2.6、用随机森林回归填补缺失值
    “”"
    使用随机森林回归填补缺失值
    任何回归都是从特征矩阵中学习,然后求解连续型标签y的过程,之所以能够实现这个过程,是因为回归算法认为,特征矩阵和标签之前存在着某种联系。实际上,标签和特征是可以相互转换的,比如说,在一个“用地区,环境,附近学校数量”预测“房价”的问题中,我们既可以用“地区”,“环境”,“附近学校数量”的数据来预测“房价”,也可以反过来,用“环境”,“附近学校数量”和“房价”来预测“地区”。而回归填补缺失值,正是利用了这种思想。
    对于一个有n个特征的数据来说,其中特征T有缺失值,我们就把特征T当作标签,其他的n-1个特征和原本的标签组成新的特征矩阵。那对于T来说,它没有缺失的部分,就是我们的Y_train,这部分数据既有标签也有特征,而它缺失的部分,只有特征没有标签,就是我们需要预测的部分。
    特征T不缺失的值对应的其他n-1个特征 + 本来的标签:X_train
    特征T不缺失的值:Y_train
    特征T缺失的值对应的其他n-1个特征 + 本来的标签:X_test
    特征T缺失的值:未知,我们需要预测的Y_test
    这种做法,对于某一个特征大量缺失,其他特征却很完整的情况,非常适用。
    那如果数据中除了特征T之外,其他特征也有缺失值怎么办?
    答案是遍历所有的特征,从缺失最少的开始进行填补(因为填补缺失最少的特征所需要的准确信息最少)。填补一个特征时,先将其他特征的缺失值用0代替,每完成一次回归预测,就将预测值放到原本的特征矩阵中,再继续填补下一个特征。每一次填补完毕,有缺失值的特征会减少一个,所以每次循环后,需要用0来填补的特征就越来越少。当进行到最后一个特征时(这个特征应该是所有特征中缺失值最多的),已经没有任何的其他特征需要用0来进行填补了,而我们已经使用回归为其他特征填补了大量有效信息,可以用来填补缺失最多的特征。遍历所有的特征后,数据就完整,不再有缺失值了。
    “”"
    下面是实现结果;

    x_missing_reg = x_missing.copy()
    sortindex = np.argsort(x_missing_reg.isnull().sum(axis=0)).values
    # np.argsort()返回从小大到大顺序的索引
    #找出数据集中缺失值从小到大的排序
    #首先我们需要知道缺失值最少的特征咧
    for i in sortindex:
        #构建我们的新特征矩阵和新标签
        df=x_missing_reg
        fillc = df.iloc[:,i]
        df = pd.concat([df.iloc[:,df.columns != i],pd.DataFrame(y_full)],axis=1)
         #在新特征矩阵中,对含有缺失值的列,进行0的填补
        df_0 =SimpleImputer(missing_values=np.nan,
                            strategy='constant',fill_value=0).fit_transform(df)
        
        #找出我们的训练集和测试集
        y_train = fillc[fillc.notnull()]
        y_test = fillc[fillc.isnull()]
        x_train = df_0[y_train.index,:]
        x_test = df_0[y_test.index,:]
        #用随机森林回归来填补缺失值
        
        rfc = RandomForestRegressor(n_estimators=100)
        rfc = rfc.fit(x_train, y_train)
        y_predict = rfc.predict(x_test)
        
        #将填补好的特征返回到我们的原始的特征矩阵中
        x_missing_reg.loc[x_missing_reg.iloc[:,i].isnull(),i] = y_predict
    

    2.6.1对填补好的数据集进行建模

    #对所有数据进行建模,取得MSE结果
    X = [X_full,X_missing_mean,X_missing_0,X_missing_reg]
    mse = []
    std = []
    for x in X:
        estimator = RandomForestRegressor(random_state=0, n_estimators=100)
        scores = cross_val_score(estimator,x,y_full,scoring='neg_mean_squared_error',
    cv=5).mean()
        mse.append(scores * -1)
    print(mse)
    

    结果:

    [21.628604607435442, 40.844054769559293, 49.506570288934171, 19.365935065385358]
    

    2.6.2经结果进行可视化展示

    x_labels = ['Full data'
                 ,'Zero Imputation'
                ,'Mean Imputation'
               
                ,'Regressor Imputation']
    colors = ['r', 'g', 'b', 'orange']
    plt.figure(figsize=(12, 6))
    ax = plt.subplot(111)#添加子图,所有的都要在子图上进行操作
    for i in np.arange(len(mse)):#barh 表示横向的柱状图
        ax.barh(i, mse[i],color=colors[i], alpha=0.6, align='center')
    ax.set_title('Imputation Techniques with Boston Data')
    ax.set_xlim(left=np.min(mse) * 0.9
                ,right=np.max(mse) * 1.1)
    ax.set_yticks(np.arange(len(mse)))
    ax.set_xlabel('MSE')
    ax.set_yticklabels(x_labels)
    plt.show()
    

    在这里插入图片描述
    从图中的结果可以看出来,随机森林回归方法的缺失值填充效果最好。

    展开全文
  • sklearn的DecisionTreeRegressor 回归树

    千次阅读 2019-08-13 12:06:35
    DecisionTreeRegressor class sklearn.tree.DecisionTreeRegressor (criterion=’mse’, splitter=’best’, max_depth=...min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features...
  • DecisionTreeRegressorclass sklearn.tree.DecisionTreeRegressor (criterion=’mse’, splitter=’best’, max_depth=None,min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=...
  • The weight and the fraction of the different materials have been estimated from the measured weight of the individual components supposed to be built on the supply tubes. Also the materials are now ...
  • sklearn.ensemble.RandomForest 参数详解

    千次阅读 2017-04-15 11:49:24
    RandomForestRegressor 参数class sklearn.ensemble.RandomForestRegressor(n_estimators=10, criterion='mse', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_...
  • DecisionTreeRegressor class sklearn.tree.DecisionTreeRegressor (criterion=’mse’, splitter=’best’, max_depth...min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=No...
  • 模型调参 贪心调参 先使用当前对模型影响最大的参数进行调优,达到当前参数下的模型最优化,再使用对模型影响次之的参数进行调优,如此...③:bagging_fraction、 feature_fraction、bagging_freq ④:reg_lambda、reg_
  • 机器学习之决策树一

    2019-09-04 20:42:17
    机器学习之决策树一 ...class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_...
  • classsklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_sta...
  • class sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2,min_samples_leaf =1, min_weight_fraction_leaf=0.0, max_features=None, random_...
  • classsklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=...
  • classsklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=...
  • classsklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=...
  • DecisionTreeClassifier的参数说明

    千次阅读 2020-03-25 22:16:59
    class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=...
  • class sklearn.tree.DecisionTreeClassifier(criterion='gini', splitter='best', max_depth=None, min_samples_split=2,min_samples_leaf =1, min_weight_fraction_leaf=0.0,max_features=None, random_state=None,...
  • class sklearn.tree.DecisionTreeClassifier(criterion=’gini’, splitter=’best’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=None, random_state=...
  • sklearn之分类决策树

    千次阅读 2017-07-14 08:33:27
    分类决策树 DecisionTreeClassifier 函数原型为 sklearn.tree.DecisionTreeClassifier(criterion=’gini’,...max_depth=None,min_samples_split=2,min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_feat
  • 默认参数class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, ...
  • class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion='gini', max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features='auto', max_leaf_no...

空空如也

空空如也

1 2 3 4 5 ... 12
收藏数 239
精华内容 95
关键字:

fractionweight