• 机器学习第10天:集成学习


    文章目录

    机器学习专栏

    介绍

    投票分类器

    介绍

    代码

    核心代码

    示例代码

    软投票与硬投票

    bagging与pasting

    介绍

    核心代码

    随机森林

    介绍

    代码

    结语


    机器学习专栏

    机器学习_Nowl的博客-CSDN博客

    介绍

    集成学习的思想是很直观的:多个人判断的结合往往比一个人的想法好

    我们将在下面介绍几种常见的集成学习思想与方法 

    投票分类器

    介绍

    假如我们有一个分类任务,我们训练了多个模型:逻辑回归模型,SVM分类器,决策树分类器,然后我们看他们预测的结果,如果两个分类器预测为1,一个分类器预测为0,那么最后模型判断为1,采用的是一种少数服从多数的思想


    代码

    核心代码

    引入投票分类器库,并创建模型

    1. from sklearn.ensemble import VotingClassifier
    2. log_model = LogisticRegression()
    3. tree_model = DecisionTreeClassifier()
    4. svc_model = SVC()
    5. voting_model = VotingClassifier(
    6. estimators=[('lr', log_model), ('df', tree_model), ('sf', svc_model)],
    7. voting='hard'
    8. )
    9. voting_model.fit(x, y)

    例子中创建了三个基础分类器,最后再组合成一个投票分类器 

    示例代码

    我们在鸢尾花数据集上测试不同模型的分类效果

    1. from sklearn.ensemble import VotingClassifier
    2. from sklearn.svm import SVC
    3. from sklearn.linear_model import LogisticRegression
    4. from sklearn.tree import DecisionTreeClassifier
    5. from sklearn.datasets import load_iris
    6. from sklearn.metrics import accuracy_score
    7. from sklearn.model_selection import train_test_split
    8. iris = load_iris()
    9. X = iris.data # petal length and width
    10. y = iris.target
    11. X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
    12. log_model = LogisticRegression()
    13. tree_model = DecisionTreeClassifier()
    14. svc_model = SVC()
    15. voting_model = VotingClassifier(
    16. estimators=[('lr', log_model), ('df', tree_model), ('sf', svc_model)],
    17. voting='hard'
    18. )
    19. for model in (log_model, tree_model, svc_model, voting_model):
    20. model.fit(X_train, y_train)
    21. y_pred = model.predict(X_test)
    22. print(model, accuracy_score(y_test, y_pred))

    运行结果

    该示例代码可以看到各个模型在相同数据集上的性能测试,该示例的数据集较小,所以性能相差不大,当数据集增大时 ,集成学习的性能往往比单个模型更优


    软投票与硬投票

    当基本模型可以计算每个类的概率时,集成学习将概率进行平均计算得出结果,这种方法被称作软投票,当基本模型只能输出类别时,只能实行硬投票(以预测次数多的为最终结果)

    bagging与pasting

    介绍

    除了投票分类这种集成方法,我们还有其他方法,例如:使用相同的基础分类器,但是每个分类器训练的样本将从数据集中随机抽取,最后再结合性能,若抽取样本放回,则叫做bagging方法,若不放回,则叫做pasting方法


    核心代码

    1. from sklearn.ensemble import BaggingClassifier
    2. from sklearn.tree import DecisionTreeClassifier
    3. model = BaggingClassifier(
    4. DecisionTreeClassifier(), n_estimators=500,
    5. max_samples=100, bootstrap=True, n_jobs=-1
    6. )
    7. model.fit(X_train, y_train)

    若基本分类器可以计算每个类的概率,BaggingClassifier自动执行软分类方法

    bootstrap = True设置模型采用Bagging放回采样法

    n_jobs参数代表用多少CPU内核进行训练何预测(-1代表使用所有可用内核)

    设置为False时采用Pasting不放回采样法 


    随机森林

    介绍

    随机森林就是一种基本模型是决策树的Bagging方法,你可以使用BaggingClassifier集成DecisionTreeClassifier,也可以使用现成的库


    代码

    1. from sklearn.ensemble import RandomForestClassifier
    2. model = RandomForestClassifier(n_estimators=100, max_leaf_nodes=16, n_jobs=-1)
    3. model.fit(X_train, y_train)

    max_leaf_nodes限制了子分类器的最大叶子节点数量


    结语

    集成学习就是利用了一个很基本的思想:多数人的想法往往比一个人的想法更优,同时概率论中也有这样一个场景:实验次数越多,概率越接近本质

  • 相关阅读:
    浏览器的缓存机制 优点 缺点 协商缓存和强缓存 浏览器缓存过程 如何判断强缓存是否过期
    利用redis 的原子性生成不重复编号
    高性能图表组件LightningChart .NET v11.0发布——增强DPI感知能力
    【精句】k8s资源管理概述
    攻防世界-MISC:a_good_idea
    目标检测评估指标mAP:从Precision,Recall,到AP50-95【未完待续】
    ptmalloc源码分析 - free()函数的实现(10)
    计算机毕业设计Java创意产业园区管理(源码+系统+mysql数据库+lw文档)
    电力电子转战数字IC20220725day56——寄存器模型
    java计算机毕业设计汽车美容管理(附源码、数据库)
  • 原文地址:https://blog.csdn.net/MuRanstr/article/details/134496913