zoukankan      html  css  js  c++  java
  • 模型融合:Stacking

    Stacking是堆叠的意思,把多个模型堆叠到一起。
    它通过一个元模型把数据堆叠到一起,这个元模型训练的特征就是模型+模型输出的结果,标签是训练集的y。
    预测时用所有的模型预测一遍,得到的结果作为特征给元模型,输出最终的结果。

    from sklearn import datasets
    
    X, y = datasets.load_iris(return_X_y=True)
    
    from sklearn.model_selection import train_test_split
    X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    
    
    # stacking
    from sklearn.tree import DecisionTreeClassifier
    from sklearn.svm import LinearSVC
    from sklearn.linear_model import LogisticRegression
    from sklearn.naive_bayes import GaussianNB
    
    dtc_classifier = DecisionTreeClassifier()
    svc_classifier = LinearSVC()
    
    dtc_classifier.fit(X_train, y_train)
    svc_classifier.fit(X_train, y_train)
    nb = GaussianNB().fit(X_train, y_train)
    
    
    from sklearn import metrics
    
    print(metrics.accuracy_score(y_test, dtc_classifier.predict(X_test)))
    # 0.8666666666666667
    print(metrics.accuracy_score(y_test, svc_classifier.predict(X_test)))
    # 1.0
    print(metrics.accuracy_score(y_test, nb.predict(X_test)))
    # 0.9666666666666667
    
    from sklearn.ensemble import StackingClassifier
    
    # 传入的estimator必须fit过
    sc = StackingClassifier(estimators=[('dtc_classifier', dtc_classifier),
                                        ('svc_classifier', svc_classifier),
                                        ('nb', nb)], final_estimator=LogisticRegression())
    # Stacking 也必须再fit下; 用预测结果进行训练
    sc.fit(X_train, y_train)
    
    print(metrics.accuracy_score(y_test, sc.predict(X_test)))
    # 1.0
    
    
  • 相关阅读:
    CSS3属性transform详解之(旋转:rotate,缩放:scale,倾斜:skew,移动:translate)
    MySQL<添加、更新与删除数据>
    MySQL<数据库和表的基本操作>
    MySQL<数据库入门>
    MySql阶段案例
    Mysql综合案例
    Mysql课后思考题
    Java课后思考题
    Java课后简答题
    超全面的JavaWeb笔记day23<AJAX>
  • 原文地址:https://www.cnblogs.com/oaks/p/14582015.html
Copyright © 2011-2022 走看看