精华内容
下载资源
问答
  • 集成学习主要分为bagging,boosting和stacking方法。本文主要是介绍stacking方法及其应用。但是在总结之前还是先回顾一下继承学习。这部分主要转自网络。 给定一个大小为n的训练集D,Bagging算法从中均匀、有放回地...
  • 集成学习总结 & Stacking方法详解

    万次阅读 多人点赞 2017-07-21 18:01:59
    集成学习主要分为 bagging, boosting 和 stacking方法。本文主要是介绍stacking方法及其应用。但是在总结之前还是先回顾一下继承学习。 这部分主要转自知乎。 1. Bagging方法:   给定一个大小为n的训练集 D,...

    集成学习主要分为 bagging, boosting 和 stacking方法。本文主要是介绍stacking方法及其应用。但是在总结之前还是先回顾一下继承学习。

    这部分主要转自知乎

    1. Bagging方法:

     

    给定一个大小为n的训练集 D,Bagging算法从中均匀、有放回地选出 m个大小为 n' 的子集Di,作为新的训练集。在这 m个训练集上使用分类、回归等算法,则可得到 m个模型,再通过取平均值、取多数票等方法综合产生预测结果,即可得到Bagging的结果。

    (转自知乎)

     

    2. Boosting 方法

    加入的过程中,通常根据它们的上一轮的分类准确率给予不同的权重。加和弱学习者之后,数据通常会被重新加权,来强化对之前分类错误数据点的分类,其中一个经典的提升算法例子是AdaBoost。

    (来自知乎)

     

    3. Stacking 方法:

    将训练好的所有基模型对整个训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测:

     

    下面我们介绍一款功能强大的stacking利器,mlxtend库,它可以很快地完成对sklearn模型地stacking。

    主要有以下几种使用方法吧:

    I. 最基本的使用方法,即使用前面分类器产生的特征输出作为最后总的meta-classifier的输入数据

     

    from sklearn import datasets
    
    iris = datasets.load_iris()
    X, y = iris.data[:, 1:3], iris.target
    
    from sklearn import model_selection
    from sklearn.linear_model import LogisticRegression
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.naive_bayes import GaussianNB 
    from sklearn.ensemble import RandomForestClassifier
    from mlxtend.classifier import StackingClassifier
    import numpy as np
    
    clf1 = KNeighborsClassifier(n_neighbors=1)
    clf2 = RandomForestClassifier(random_state=1)
    clf3 = GaussianNB()
    lr = LogisticRegression()
    sclf = StackingClassifier(classifiers=[clf1, clf2, clf3], 
                              meta_classifier=lr)
    
    print('3-fold cross validation:\n')
    
    for clf, label in zip([clf1, clf2, clf3, sclf], 
                          ['KNN', 
                           'Random Forest', 
                           'Naive Bayes',
                           'StackingClassifier']):
    
        scores = model_selection.cross_val_score(clf, X, y, 
                                                  cv=3, scoring='accuracy')
        print("Accuracy: %0.2f (+/- %0.2f) [%s]" 
              % (scores.mean(), scores.std(), label))


    II. 另一种使用第一层基本分类器产生的类别概率值作为meta-classfier的输入,这种情况下需要将StackingClassifier的参数设置为 use_probas=True。如果将参数设置为 average_probas=True,那么这些基分类器对每一个类别产生的概率值会被平均,否则会拼接。

     

       例如有两个基分类器产生的概率输出为:

    classifier 1: [0.2, 0.5, 0.3]

    classifier 2: [0.3, 0.4, 0.4]

       1) average = True : 

    产生的meta-feature 为:[0.25, 0.45, 0.35]

       2) average = False:

    产生的meta-feature为:[0.2, 0.5, 0.3, 0.3, 0.4, 0.4]

     

    from sklearn import datasets
    
    iris = datasets.load_iris()
    X, y = iris.data[:, 1:3], iris.target
    
    from sklearn import model_selection
    from sklearn.linear_model import LogisticRegression
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.naive_bayes import GaussianNB 
    from sklearn.ensemble import RandomForestClassifier
    from mlxtend.classifier import StackingClassifier
    import numpy as np
    
    clf1 = KNeighborsClassifier(n_neighbors=1)
    clf2 = RandomForestClassifier(random_state=1)
    clf3 = GaussianNB()
    lr = LogisticRegression()
    sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
                              use_probas=True,
                              average_probas=False,
                              meta_classifier=lr)
    
    print('3-fold cross validation:\n')
    
    for clf, label in zip([clf1, clf2, clf3, sclf], 
                          ['KNN', 
                           'Random Forest', 
                           'Naive Bayes',
                           'StackingClassifier']):
    
        scores = model_selection.cross_val_score(clf, X, y, 
                                                  cv=3, scoring='accuracy')
        print("Accuracy: %0.2f (+/- %0.2f) [%s]" 
              % (scores.mean(), scores.std(), label))


    III. 另外一种方法是对训练基中的特征维度进行操作的,这次不是给每一个基分类器全部的特征,而是给不同的基分类器分不同的特征,即比如基分类器1训练前半部分特征,基分类器2训练后半部分特征(可以通过sklearn 的pipelines 实现)。最终通过StackingClassifier组合起来。

     

     

    from sklearn.datasets import load_iris
    from mlxtend.classifier import StackingClassifier
    from mlxtend.feature_selection import ColumnSelector
    from sklearn.pipeline import make_pipeline
    from sklearn.linear_model import LogisticRegression
    
    iris = load_iris()
    X = iris.data
    y = iris.target
    
    pipe1 = make_pipeline(ColumnSelector(cols=(0, 2)),
                          LogisticRegression())
    pipe2 = make_pipeline(ColumnSelector(cols=(1, 2, 3)),
                          LogisticRegression())
    
    sclf = StackingClassifier(classifiers=[pipe1, pipe2], 
                              meta_classifier=LogisticRegression())
    
    sclf.fit(X, y)

     

    StackingClassifier 使用API及参数解析:

     

    StackingClassifier(classifiers, meta_classifier, use_probas=False, average_probas=False, verbose=0, use_features_in_secondary=False)

    参数:

    classifiers : 基分类器,数组形式,[cl1, cl2, cl3]. 每个基分类器的属性被存储在类属性 self.clfs_.
    meta_classifier : 目标分类器,即将前面分类器合起来的分类器
    use_probas : bool (default: False) ,如果设置为True, 那么目标分类器的输入就是前面分类输出的类别概率值而不是类别标签
    average_probas : bool (default: False),用来设置上一个参数当使用概率值输出的时候是否使用平均值。
    verbose : int, optional (default=0)。用来控制使用过程中的日志输出,当 verbose = 0时,什么也不输出, verbose = 1,输出回归器的序号和名字。verbose = 2,输出详细的参数信息。verbose > 2, 自动将verbose设置为小于2的,verbose -2.
    use_features_in_secondary : bool (default: False). 如果设置为True,那么最终的目标分类器就被基分类器产生的数据和最初的数据集同时训练。如果设置为False,最终的分类器只会使用基分类器产生的数据训练。

    属性:
    clfs_ : 每个基分类器的属性,list, shape 为 [n_classifiers]。
    meta_clf_ : 最终目标分类器的属性

    方法:

    fit(X, y)
    fit_transform(X, y=None, fit_params)
    get_params(deep=True),如果是使用sklearn的GridSearch方法,那么返回分类器的各项参数。
    predict(X)
    predict_proba(X)
    score(X, y, sample_weight=None), 对于给定数据集和给定label,返回评价accuracy
    set_params(params),设置分类器的参数,params的设置方法和sklearn的格式一样

     

     

     

     

     

    ------------------------------------------EOF---------------------------------

     

    参考文献:

    https://zhihu.com/question/29036379/answer/111637662

    https://rasbt.github.io/mlxtend/user_guide/classifier/StackingClassifier/

    https://zh.wikipedia.org/zh-hans/Bagging%E7%AE%97%E6%B3%95

    Wolpert, David H. "Stacked generalization." Neural networks 5.2 (1992): 241-259.

    展开全文
  • 集成学习Stacking方法

    2019-11-04 19:53:52
    集成学习主要分为 bagging, boosting 和 stacking方法。本文主要是介绍stacking方法及其应用。但是在总结之前还是先回顾一下继承学习。 这部分主要转自知乎。 1. Bagging方法: 给定一个大小为n的训练集 D,...

    集成学习主要分为 bagging, boosting 和 stacking方法。本文主要是介绍stacking方法及其应用。但是在总结之前还是先回顾一下继承学习。

    这部分主要转自知乎。

    1. Bagging方法:

     

    给定一个大小为n的训练集 D,Bagging算法从中均匀、有放回地选出 m个大小为 n' 的子集Di,作为新的训练集。在这 m个训练集上使用分类、回归等算法,则可得到 m个模型,再通过取平均值、取多数票等方法综合产生预测结果,即可得到Bagging的结果。

    (转自知乎)

    2. Boosting 方法

    加入的过程中,通常根据它们的上一轮的分类准确率给予不同的权重。加和弱学习者之后,数据通常会被重新加权,来强化对之前分类错误数据点的分类,其中一个经典的提升算法例子是AdaBoost。

    (来自知乎)

    3. Stacking 方法:

    将训练好的所有基模型对整个训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集进行训练。同理,预测的过程也要先经过所有基模型的预测形成新的测试集,最后再对测试集进行预测:

    下面我们介绍一款功能强大的stacking利器,mlxtend库,它可以很快地完成对sklearn模型地stacking。

    主要有以下几种使用方法吧:

    I. 最基本的使用方法,即使用前面分类器产生的特征输出作为最后总的meta-classifier的输入数据

     

    from sklearn import datasets
     
    iris = datasets.load_iris()
    X, y = iris.data[:, 1:3], iris.target
     
    from sklearn import model_selection
    from sklearn.linear_model import LogisticRegression
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.naive_bayes import GaussianNB 
    from sklearn.ensemble import RandomForestClassifier
    from mlxtend.classifier import StackingClassifier
    import numpy as np
     
    clf1 = KNeighborsClassifier(n_neighbors=1)
    clf2 = RandomForestClassifier(random_state=1)
    clf3 = GaussianNB()
    lr = LogisticRegression()
    sclf = StackingClassifier(classifiers=[clf1, clf2, clf3], 
                              meta_classifier=lr)
     
    print('3-fold cross validation:\n')
     
    for clf, label in zip([clf1, clf2, clf3, sclf], 
                          ['KNN', 
                           'Random Forest', 
                           'Naive Bayes',
                           'StackingClassifier']):
     
        scores = model_selection.cross_val_score(clf, X, y, 
                                                  cv=3, scoring='accuracy')
        print("Accuracy: %0.2f (+/- %0.2f) [%s]" 
              % (scores.mean(), scores.std(), label))

    II. 另一种使用第一层基本分类器产生的类别概率值作为meta-classfier的输入,这种情况下需要将StackingClassifier的参数设置为 use_probas=True。如果将参数设置为 average_probas=True,那么这些基分类器对每一个类别产生的概率值会被平均,否则会拼接。

     

       例如有两个基分类器产生的概率输出为:

    classifier 1: [0.2, 0.5, 0.3]

    classifier 2: [0.3, 0.4, 0.4]

       1) average = True : 

    产生的meta-feature 为:[0.25, 0.45, 0.35]

       2) average = False:

    产生的meta-feature为:[0.2, 0.5, 0.3, 0.3, 0.4, 0.4]

     

    from sklearn import datasets
     
    iris = datasets.load_iris()
    X, y = iris.data[:, 1:3], iris.target
     
    from sklearn import model_selection
    from sklearn.linear_model import LogisticRegression
    from sklearn.neighbors import KNeighborsClassifier
    from sklearn.naive_bayes import GaussianNB 
    from sklearn.ensemble import RandomForestClassifier
    from mlxtend.classifier import StackingClassifier
    import numpy as np
     
    clf1 = KNeighborsClassifier(n_neighbors=1)
    clf2 = RandomForestClassifier(random_state=1)
    clf3 = GaussianNB()
    lr = LogisticRegression()
    sclf = StackingClassifier(classifiers=[clf1, clf2, clf3],
                              use_probas=True,
                              average_probas=False,
                              meta_classifier=lr)
     
    print('3-fold cross validation:\n')
     
    for clf, label in zip([clf1, clf2, clf3, sclf], 
                          ['KNN', 
                           'Random Forest', 
                           'Naive Bayes',
                           'StackingClassifier']):
     
        scores = model_selection.cross_val_score(clf, X, y, 
                                                  cv=3, scoring='accuracy')
        print("Accuracy: %0.2f (+/- %0.2f) [%s]" 
              % (scores.mean(), scores.std(), label))

    III. 另外一种方法是对训练基中的特征维度进行操作的,这次不是给每一个基分类器全部的特征,而是给不同的基分类器分不同的特征,即比如基分类器1训练前半部分特征,基分类器2训练后半部分特征(可以通过sklearn 的pipelines 实现)。最终通过StackingClassifier组合起来。

     

    from sklearn.datasets import load_iris
    from mlxtend.classifier import StackingClassifier
    from mlxtend.feature_selection import ColumnSelector
    from sklearn.pipeline import make_pipeline
    from sklearn.linear_model import LogisticRegression
     
    iris = load_iris()
    X = iris.data
    y = iris.target
     
    pipe1 = make_pipeline(ColumnSelector(cols=(0, 2)),
                          LogisticRegression())
    pipe2 = make_pipeline(ColumnSelector(cols=(1, 2, 3)),
                          LogisticRegression())
     
    sclf = StackingClassifier(classifiers=[pipe1, pipe2], 
                              meta_classifier=LogisticRegression())
     
    sclf.fit(X, y)

    StackingClassifier 使用API及参数解析:

     

    StackingClassifier(classifiers, meta_classifier, use_probas=False, average_probas=False, verbose=0, use_features_in_secondary=False)

    参数:

    classifiers : 基分类器,数组形式,[cl1, cl2, cl3]. 每个基分类器的属性被存储在类属性 self.clfs_.
    meta_classifier : 目标分类器,即将前面分类器合起来的分类器
    use_probas : bool (default: False) ,如果设置为True, 那么目标分类器的输入就是前面分类输出的类别概率值而不是类别标签
    average_probas : bool (default: False),用来设置上一个参数当使用概率值输出的时候是否使用平均值。
    verbose : int, optional (default=0)。用来控制使用过程中的日志输出,当 verbose = 0时,什么也不输出, verbose = 1,输出回归器的序号和名字。verbose = 2,输出详细的参数信息。verbose > 2, 自动将verbose设置为小于2的,verbose -2.
    use_features_in_secondary : bool (default: False). 如果设置为True,那么最终的目标分类器就被基分类器产生的数据和最初的数据集同时训练。如果设置为False,最终的分类器只会使用基分类器产生的数据训练。

    属性:
    clfs_ : 每个基分类器的属性,list, shape 为 [n_classifiers]。
    meta_clf_ : 最终目标分类器的属性

    方法:

    fit(X, y)
    fit_transform(X, y=None, fit_params)
    get_params(deep=True),如果是使用sklearn的GridSearch方法,那么返回分类器的各项参数。
    predict(X)
    predict_proba(X)
    score(X, y, sample_weight=None), 对于给定数据集和给定label,返回评价accuracy
    set_params(params),设置分类器的参数,params的设置方法和sklearn的格式一样

     

     

     

     

     

    ------------------------------------------EOF---------------------------------

     

    参考文献:

    https://zhihu.com/question/29036379/answer/111637662

    https://rasbt.github.io/mlxtend/user_guide/classifier/StackingClassifier/

    https://zh.wikipedia.org/zh-hans/Bagging%E7%AE%97%E6%B3%95

    Wolpert, David H. "Stacked generalization." Neural networks 5.2 (1992): 241-259.
    ————————————————
    版权声明:本文为CSDN博主「will_duan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/willduan1/article/details/73618677

    展开全文
  • mlxtend库 Stacking方法

    2021-01-19 18:10:42
    创建于:2021.01.19 修改于:2021.01.19 文章目录 Scikit-learn 新版本发布,新功能详解,测试版本是Version: 0.23.2 【from sklearn.ensemble import ... Stacking方法详解 【rom mlxtend.classifier impo

    创建于:2021.01.19
    修改于:2021.01.19

    文章目录

    【KNNImputer是一种广泛使用的缺失值插补方法】sklearn.impute.KNNImputer

    展开全文
  • 将概念相似度的计算问题看做分类问题,提出一种基于Stacking方法的多策略本体映射框架;利用Stacking方法组合多种概念相似度算法,进而提出基于Widrow-Hoff理论的元数据分类算法LMSMC。该框架中,第0层分类器使用...
  • Stacking方法详解

    2018-12-04 11:33:00
    集成学习方法主要分成三种:bagging,boosting 和 Stacking。这里主要介绍Stackingstacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略。 首先来看一张图。 1、首先我们会得到两组...

    集成学习方法主要分成三种:bagging,boosting 和 Stacking。这里主要介绍Stacking。

     stacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略。

    首先来看一张图。

     

    1、首先我们会得到两组数据:训练集和测试集。将训练集分成5份:train1,train2,train3,train4,train5。

    2、选定基模型。这里假定我们选择了xgboost, lightgbm 和 randomforest 这三种作为基模型。比如xgboost模型部分:依次用train1,train2,train3,train4,train5作为验证集,其余4份作为训练集,进行5折交叉验证进行模型训练;再在测试集上进行预测。这样会得到在训练集上由xgboost模型训练出来的5份predictions,和在测试集上的1份预测值B1。将这五份纵向重叠合并起来得到A1。lightgbm和randomforest模型部分同理。

    3、三个基模型训练完毕后,将三个模型在训练集上的预测值作为分别作为3个"特征"A1,A2,A3,使用LR模型进行训练,建立LR模型。

    4、使用训练好的LR模型,在三个基模型之前在测试集上的预测值所构建的三个"特征"的值(B1,B2,B3)上,进行预测,得出最终的预测类别或概率。

     做stacking,首先需要安装mlxtend库。安装方法:进入Anaconda Prompt,输入命令 pip install mlxtend 即可。

     stacking主要有几种使用方法:

    1、最基本的使用方法,即使用基分类器所产生的预测类别作为meta-classifier“特征”的输入数据

     1 from sklearn import datasets
     2  
     3 iris = datasets.load_iris()
     4 X, y = iris.data[:, 1:3], iris.target
     5  
     6 from sklearn import model_selection
     7 from sklearn.linear_model import LogisticRegression
     8 from xgboost.sklearn import XGBClassifier
     9 import lightgbm as lgb
    10 from sklearn.ensemble import RandomForestClassifier
    11 from mlxtend.classifier import StackingClassifier
    12 import numpy as np
    13 
    14 basemodel1 = XGBClassifier()
    15 basemodel2 = lgb.LGBMClassifier()
    16 basemodel3 = RandomForestClassifier(random_state=1)
    17 
    18 lr = LogisticRegression()
    19 sclf = StackingClassifier(classifiers=[basemodel1, basemodel2, basemodel3], 
    20                           meta_classifier=lr)
    21  
    22 print('5-fold cross validation:\n')
    23  
    24 for basemodel, label in zip([basemodel1, basemodel2, basemodel3, sclf], 
    25                       ['xgboost', 
    26                        'lightgbm', 
    27                        'Random Forest',
    28                        'StackingClassifier']):
    29  
    30     scores = model_selection.cross_val_score(basemodel,X, y, 
    31                                               cv=5, scoring='accuracy')
    32     print("Accuracy: %0.2f (+/- %0.2f) [%s]" 
    33           % (scores.mean(), scores.std(), label))

    2、这一种是使用第一层所有基分类器所产生的类别概率值作为meta-classfier的输入。需要在StackingClassifier 中增加一个参数设置:use_probas = True。

    另外,还有一个参数设置average_probas = True,那么这些基分类器所产出的概率值将按照列被平均,否则会拼接。

    例如:

    基分类器1:predictions=[0.2,0.2,0.7]

    基分类器2:predictions=[0.4,0.3,0.8]

    基分类器3:predictions=[0.1,0.4,0.6]

    1)若use_probas = True,average_probas = True,

        则产生的meta-feature 为:[0.233, 0.3, 0.7]

    2)若use_probas = True,average_probas = False,

        则产生的meta-feature 为:[0.2,0.2,0.7,0.4,0.3,0.8,0.1,0.4,0.6]

     1 from sklearn import datasets
     2  
     3 iris = datasets.load_iris()
     4 X, y = iris.data[:, 1:3], iris.target
     5  
     6 from sklearn import model_selection
     7 from sklearn.linear_model import LogisticRegression
     8 from xgboost.sklearn import XGBClassifier
     9 import lightgbm as lgb
    10 from sklearn.ensemble import RandomForestClassifier
    11 from mlxtend.classifier import StackingClassifier
    12 import numpy as np
    13  
    14 basemodel1 = XGBClassifier()
    15 basemodel2 = lgb.LGBMClassifier()
    16 basemodel3 = RandomForestClassifier(random_state=1)
    17 lr = LogisticRegression()
    18 sclf = StackingClassifier(classifiers=[basemodel1, basemodel2, basemodel3], 
    19                           use_probas=True,
    20                           average_probas=False,
    21                           meta_classifier=lr)
    22 
    23 print('5-fold cross validation:\n')
    24 
    25 for basemodel, label in zip([basemodel1, basemodel2, basemodel3, sclf], 
    26                       ['xgboost', 
    27                        'lightgbm', 
    28                        'Random Forest',
    29                        'StackingClassifier']):
    30  
    31     scores = model_selection.cross_val_score(basemodel,X, y, 
    32                                               cv=5, scoring='accuracy')
    33     print("Accuracy: %0.2f (+/- %0.2f) [%s]" 
    34           % (scores.mean(), scores.std(), label))

    3、这一种方法是对基分类器训练的特征维度进行操作的,并不是给每一个基分类器全部的特征,而是赋予不同的基分类器不同的特征。比如:基分类器1训练前半部分的特征,基分类器2训练后半部分的特征。这部分的操作是通过sklearn中的pipelines实现。最终通过StackingClassifier组合起来。

     1 from sklearn.datasets import load_iris
     2 from mlxtend.classifier import StackingClassifier
     3 from mlxtend.feature_selection import ColumnSelector
     4 from sklearn.pipeline import make_pipeline
     5 from sklearn.linear_model import LogisticRegression
     6 from xgboost.sklearn import XGBClassifier
     7 from sklearn.ensemble import RandomForestClassifier
     8  
     9 iris = load_iris()
    10 X = iris.data
    11 y = iris.target
    12 #基分类器1:xgboost
    13 pipe1 = make_pipeline(ColumnSelector(cols=(0, 2)),
    14                       XGBClassifier())
    15 #基分类器2:RandomForest
    16 pipe2 = make_pipeline(ColumnSelector(cols=(1, 2, 3)),
    17                       RandomForestClassifier())
    18  
    19 sclf = StackingClassifier(classifiers=[pipe1, pipe2], 
    20                           meta_classifier=LogisticRegression())
    21  
    22 sclf.fit(X, y)

     StackingClassifier使用API和参数说明:

    StackingClassifier(classifiers, meta_classifier, use_probas=False, average_probas=False, verbose=0, use_features_in_secondary=False)
    参数:
    classifiers : 基分类器,数组形式,[cl1, cl2, cl3]. 每个基分类器的属性被存储在类属性 self.clfs_.
    meta_classifier : 目标分类器,即将前面分类器合起来的分类器
    use_probas : bool (default: False) ,如果设置为True, 那么目标分类器的输入就是前面分类输出的类别概率值而不是类别标签
    average_probas : bool (default: False),当上一个参数use_probas = True时需设置,average_probas=True表示所有基分类器输出的概率值需被平均,否则拼接。
    verbose : int, optional (default=0)。用来控制使用过程中的日志输出,当 verbose = 0时,什么也不输出, verbose = 1,输出回归器的序号和名字。verbose = 2,输出详细的参数信息。verbose > 2, 自动将verbose设置为小于2的,verbose -2.
    use_features_in_secondary : bool (default: False). 如果设置为True,那么最终的目标分类器就被基分类器产生的数据和最初的数据集同时训练。如果设置为False,最终的分类器只会使用基分类器产生的数据训练。
     
    备注:Stacking一般多是两层就够了,多层也是可以的。
    例如下图:

     

    转载于:https://www.cnblogs.com/Christina-Notebook/p/10063146.html

    展开全文
  • 集成学习(Ensemble Learning)、Bagging方法、随机森林、Boosting方法、方差与偏差及Stacking方法的详细阐述。
  • 本文参考了Kaggle机器学习之模型融合(stacking)心得 stacking是用于模型融合的一个大杀器,其基本思想是将多个模型的结果进行融合来提高预测率。,理论介绍有很多,实际的例子比较少,本文将其实例化,并给出详细...
  • 【机器学习】Stacking方法详解

    千次阅读 2019-08-08 11:21:10
    集成学习方法主要分成三种:bagging,boosting 和 Stacking。这里主要介绍Stackingstacking严格来说并不是一种算法,而是精美而又复杂的,对模型集成的一种策略。 首先来看一张图。 1、首先我们会得到两组...
  • 模型融合中的stacking方法

    千次阅读 2019-05-15 16:18:31
    本文参考了Kaggle机器学习之模型融合(stacking)心得 stacking是用于模型融合的一个大杀器,其基本思想是将多个模型的结果进行融合来提高预测率。,理论介绍有很多,实际的例子比较少,本文将其实例化,并给出详细...
  • 机器学习-Stacking方法的原理及实现

    千次阅读 2019-04-12 19:30:36
    本文主要介绍了Stacking集成模型方法以及使用框架Mlxtend实现Stacking模型。
  • 模型融合之Stacking方法

    千次阅读 2018-08-10 09:36:50
    Stacking(stacked generalization)是在大数据竞赛中不可缺少的武器 将训练好的所有基模型对整个训练集进行预测,第j个基模型对第i个训练样本的预测值将作为新的训练集中第i个样本的第j个特征值,最后基于新的训练集...
  • 1.一个简单的单层stacking import seaborn as sns import matplotlib.pyplot as plt from imblearn.over_sampling import SMOTE, ADASYN from sklearn.model_selection import cross_val_score from sklearn.model_...
  • 模型融合之stacking方法

    千次阅读 2018-04-26 09:22:16
    之前一直对stacking一知半解,找到的资料也介绍的很模糊。所以有多看了几篇文章,然后来此写篇博客,加深一下印象,顺便给各位朋友分享一下。 stacking的过程有一张图非常经典,如下: 虽然他很直观,但是...
  • Stacking方法是模型融合的一个方法,当然流派很多,我知道的有: (然而我分不清Blend和Stack的区别, 手动滑稽) 使用有放回无重复的取样,训练多个子模型,通过子模型生成新的训练集和测试集,再进行下一波训练 ...
  • ) 2 训练并保存模型 方法1是 tf.keras.models.save_model(model, "文件夹"), 等价于tf.saved_model.save(obj, 文件夹),导出的模型可以再训练,但是不能用tf.keras训练了,需要手动写代码训练。 方法2是tf.keras....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,545
精华内容 3,418
关键字:

Stacking方法