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
    
    
  • 相关阅读:
    Linux Xshell常用命令(项目部署)
    返回的数据转换成百分比分的方法
    百度分享插件
    vue请求中 post get传参方式是不同的哦
    Axios 中文使用
    关于iview ui的"Page分页"组件的使用
    Vue 实现前进刷新,后退不刷新的效果
    Vue框架Element UI教程-axios请求数据
    Spring学习总结(8)-接口多个实现类的动态调用
    Redis集群
  • 原文地址:https://www.cnblogs.com/oaks/p/14582015.html
Copyright © 2011-2022 走看看