机器学习入门____5.集成学习算法与随机森林

集成学习算法

集成学习通过建立几个模型组合的来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成单预测,因此优于任何一个单分类的做出预测。

常见集成方法

Bagging

百度百科的解释:
1.给定一个弱学习算法,和一个训练集;
2.单个弱学习算法准确率不高;
3.将该学习算法使用多次,得出预测函数序列,进行投票;
4.最后结果准确率将得到提高.
简单的理解就是同一种算法换用不同的训练集或者参数得到不同的预测函数,通过预测函数预测结果,最终或是取平均值得到结果或者取众数得到结果。其中典型的代表就是随机森林

Boosting

Adaboost

百度百科中的解释:
 AdaBoost算法中不同的训练集是通过调整每个样本对应的权重来实现的。开始时,每个样本对应的权重是相同的,即其中 n 为样本个数,在此样本分布下训练出一弱分类器。对于分类错误的样本,加大其对应的权重;而对于分类正确的样本,降低其权重,这样分错的样本就被突显出来,从而得到一个新的样本分布。在新的样本分布下,再次对样本进行训练,得到弱分类器。依次类推,经过 T 次循环,得到 T 个弱分类器,把这 T 个弱分类器按一定的权重叠加(boost)起来,得到最终想要的强分类器。 AdaBoost算法的具体步骤如下:

  1. 给定训练样本集S,其中X和Y分别对应于正例样本和负例样本; T为训练的最大循环次数;
  2. 初始化样本权重为1/n ,即为训练样本的初始概率分布;
  3. 第一次迭代:
    (1) 训练样本的概率分布相当下,训练弱分类器;
    (2) 计算弱分类器的错误率;
    (3) 选取合适阈值,使得误差最小;
    (4) 更新样本权重;
    经T次循环后,得到T个弱分类器,按更新的权重叠加,最终得到的强分类器。

Stacking

堆叠算法。将训练分为多个阶段,使用多个分类器,如KNN、SVM等,当一个阶段的分类完成后,将得到的结果再投入第二阶段进行训练,以此类推。如先拿KNN得到结果,再将结果扔到逻辑回归里训练再得到一个结果…堆叠算法确实能够提升准确率

交叉验证

交叉验证的目的是为了使评估模型更准确可信

交叉验证的过程

将拿到的数据分为训练集和测试集,如将训练集和测试集分为五份,每次取其中一份作为测试集,其余为训练集,进行5次训练与测试,得到五个准确率,并取平均得到平均准确率。称之为五折交叉验证,如图。
在这里插入图片描述

超参数网格搜索

通常情况下,有很多参数是需要手动指定的(如k-近邻算法中的K值),这种叫超参数。但是手动过程繁杂,所以需要对模型预设几种超参数组合。每组超参数都采用交叉验证来进行评估。最后选出最优参数组合建立模型。如果是用多组超参数,譬如参数1给出了3,5,7这三个值,参数2给出了1,2,8三个值,那么经过组合后一共有九种组合方式

sklearn中的网格搜索

调用到的函数:

#引入GridSearchCV网格搜索与交叉验证的包
from sklearn.model_selection import GridSearchCV
sklearn.model_selection.GridSearchCV(estimator, param_grid=None,cv=None)

estimator 表示函数的训练模型,如K近邻或者决策树等
param_grid 表示训练模型要调的参数,以字典形式传入
cv表示进行几折交叉验证

随机森林

在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定。是bagging算法中的代表。例如,我们训练了五个决策树,其中四个决策树得到的结果是1,一个得到的结果是2,那么我们的最终结果就是1。
根据下列算法而建造每棵树:
用N来表示训练用例(样本)的个数,M表示特征数目。
输入特征数目m,用于确定决策树上一个节点的决策结果;其中m应远小于M。
从N个训练用例(样本)中以有放回抽样的方式,取样N次,形成一个训练集(即bootstrap取样),并用未抽到的用例(样本)作预测,评估其误差。

sklearn中随机森林的实现

接上篇机器学习入门____4.基于sklearn的决策树算法使用

#从集成算法中导入随机森林所在包
from sklearn.ensemble import RandomForestClassifier

函数原型:

class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’,
 max_depth=None, bootstrap=True, random_state=None)

n_estimators:森林中的树木个数
criterion:分割特征的测量方法,默认选择’gini’
max_depth:树的默认深度,默认不给定
bootstrap:是否是有放回的抽样,默认为是
random_state:随机数种子,默认为无。一旦给定表示每次随机出来的结果都相同(同一次随机下来)

代码实现:

	# 设置并行数和cpu核数一致
    rf = RandomForestClassifier(n_jobs=-1)
    # 设置超参数网格搜索
    param = {'n_estimators': [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}
    # 传入随机森林模型,要进行网格搜索的参数,以及折数
    gc = GridSearchCV(rf, param_grid=param, cv=2)
    # 进行训练
    gc.fit(x_train, y_train)
    # 得出结果
    print("准确率:", {gc.score(x_test, y_test)})
    print("最佳参数模型:", gc.best_params_)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python机器学习入门的第一个任务是处理数据。数据是机器学习的基础,因此了解如何处理和准备数据是非常重要的。在Python中,有许多库和工具可用于数据处理,例如NumPy和Pandas。NumPy是一个用于科学计算的强大库,可以处理多维数组和矩阵。Pandas是一个用于数据分析和处理的库,它提供了灵活的数据结构和数据操作功能。 在任务1中,您需要学习如何加载数据集,了解数据的结构和特征,处理缺失值和异常值,进行数据清洗和转换等。您可以使用Pandas库来加载和处理数据集,使用其提供的函数和方法来完成这些任务。例如,您可以使用Pandas的read_csv函数来加载CSV文件,使用head函数来查看数据的前几行,使用describe函数来获取数据的统计信息,使用dropna函数来删除缺失值等。 此外,您还可以使用Matplotlib和Seaborn等库来可视化数据,以便更好地理解数据的分布和关系。这些库提供了各种绘图函数和方法,可以创建直方图、散点图、箱线图等。 总之,Python机器学习入门的第一个任务是数据处理,您需要学习如何加载、清洗和转换数据。使用Pandas、NumPy和其他相关库可以帮助您完成这些任务。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* *2* *3* [python机器学习模块_机器学习所需的python基础知识及其库模块](https://blog.csdn.net/weixin_26711425/article/details/108935596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值