常用机器学习分类算法(机器学习中集成学习)
常用机器学习分类算法(机器学习中集成学习)
2024-09-27 01:33:27  作者:散了酒香  网址:https://m.xinb2b.cn/tech/zft146648.html


什么是集成方法?

集成方法是通过建立一组独立的机器学习模型,组合多个模型的预测对类标签进行预测的方法。这种策略组合可以减少总误差,包括减少方差和偏差,或者提高单个模型的性能。


在这里,我使用来自Kaggle的“红酒质量”数据(https://www.kaggle.com/uciml/red-wine-quality-cortez-et-al-2009)来演示集成方法。“quality”是我们的目标变量。我唯一要做的预处理就是将10分制的评分转换为3个分类级别,“ 1”,“ 2”和“ 3”分别代表“好”,“中”和“差”。

import pandas as pdfrom sklearn.model_selection import train_test_splitfrom sklearn.metrics import accuracy_score#import datawine = pd.read_csv('winequality.csv')#preprocess datadef getquality(x): if x > 6.5: return 1 elif x < 4.5: return 3 else: return 2wine['quality'] = wine['quality'].apply(getquality)#seperate features and target variablex = wine.drop(['quality'], axis=1)y = wine['quality']#split into train and test dataxtrain, xtest, ytrain, ytest = train_test_split(x, y, test_size=0.2, random_state=1)#copy code to deal with SettingWithCopyWarnxtrain = xtrain.copy()xtest = xtest.copy()ytrain = ytrain.copy()ytest = ytest.copy()

机器学习模型1:

默认的DecisionTreeClassifier()的准确性得分是0.815625。

from sklearn.tree import DecisionTreeClassifiermodel = DecisionTreeClassifier()model.fit(xtrain, ytrain)model_pred = model.predict(xtest)#see prediction resultprint('Accuracy Score: {0:6f}'.format(model.score(xtest, ytest)))

Bagging

所谓的bootstrapping aggregation,其思想是在随机不同版本的训练数据上训练许多基础模型。每个模型拥有一票表决权,并且无​​论预测准确度如何,都做相同的处理,然后对预测变量进行汇总以得出最终结果。在大多数情况下,Bagging后结果的方差会变小。例如,随机森林是Bagging方法中最著名的模型,它将决策树与Bagging理念结合在一起。

我们通常在每一轮中使用bootstrapping方法(替换样本)从原始样本集中提取训练子集。因此,在训练集中,有些样本可能被多次使用,而有些样本可能永远不会被使用。这使得训练子集是独立的。

模型的选择没有限制,我们根据所面临的问题采用不同的分类器或回归器。每个预测模型都可以由训练集并行生成。它们同等重要,所占比重相同。在合并输出后,我们对分类问题使用多数投票,对回归问题使用平均投票。

机器学习模型2:

我们没有建立随机森林分类器,而是将决策树与BaggingClassifier()结合使用,得到了0.856250的准确率。

from sklearn.ensemble import BaggingClassifiermodel = BaggingClassifier(base_estimator=clf, random_state=0)model.fit(xtrain, ytrain)model_pred = model.predict(xtest)#see prediction resultprint('Accuracy Score: {0:6f}'.format(model.score(xtest, ytest)))

boosting

boosting和bagging之间最本质的区别在于,boosting并不会同等的对待基础模型,而是通过连续的测试和筛选来选择“精英”。表现良好的模型对投票的权重更大,而表现较差的模型的权重更小,然后将所有的投票组合得到最终结果。在大多数情况下,boosting后结果的偏差会变小。例如,Adaboost和Gradient boost是boosting方法中最常用的模型。

一般情况下,每一轮的训练集保持不变,但在boosting轮次结束时,模型中每个样本在训练集中的分布可能会发生变化。这是一个迭代过程,它更关注(增加权重)以前错误分类的记录,而忽略(减少权重)前一轮中正确的记录。换句话说,它可以将弱学习者的表现提高到强学习者的水平。

与bagging不同,每个预测模型只能顺序生成,因为后一个模型的参数需要前一个模型的结果。汇总模型后,我们对分类问题使用多数投票,对回归问题进行平均。

机器学习模型3:

GradientBoostingClassifier()给我们的准确率评分为0.846875,也高于没有boost的准确率。

from sklearn.ensemble import GradientBoostingClassifiermodel = GradientBoostingClassifier(random_state=0)model.fit(xtrain, ytrain)model_pred = model.predict(xtest)#see prediction resultprint(‘Accuracy Score: {0:6f}’.format(model.score(xtest, ytest)))

Stacking

对基础模型(弱学习者)的结果进行平均或投票相对简单,但是学习误差可能很大,因此创建了另一种学习方法(Stacking)。Stacking策略不是对模型的结果进行简单的逻辑处理,而是在模型外增加一层。

因此,我们总共有两层模型,即通过预测训练集建立第一层模型,然后将训练集预测模型的结果作为输入,再对第二层新模型进行训练,得到最终结果。基本上,Stacking可以减少方差或bagging/boosting的偏差。

机器学习模型4:

StackingClassifier()的准确率得分为0.875000。虽然与第1层模型相比,它不是最高的,但它成功地提高了决策树和KNN的性能。


from sklearn.neighbors import KNeighborsClassifierfrom sklearn.ensemble import RandomForestClassifierfrom mlxtend.classifier import StackingClassifier#build two layer models using stackinglayer1 = [DecisionTreeClassifier(), KNeighborsClassifier(), RandomForestClassifier(random_state=0)]layer2 = GradientBoostingClassifier(random_state=0)model = StackingClassifier(classifiers=layer1, meta_classifier=layer2)model.fit(xtrain, ytrain)model_pred = model.predict(xtest)#see prediction resultprint(‘Accuracy Score: {0:6f}’.format(model.score(xtest, ytest)))

最后


从混淆矩阵中,我们发现对于所有模型而言,葡萄酒的中等级别(第二行)确实很难预测。但是,葡萄酒的差等级(第三行)更容易识别。

尽管我们能够在不理解场景背后的情况下构建模型,但是仍然建议您了解每个机器学习模型是如何工作的。因为只有对一个模型有了更多的了解,我们才能有效地使用它,并解释它是如何正确地做出预测的。

  • 今年农历2月初一为什么是龙抬头(是护佑家人平安的福神)
  • 2024-09-27是护佑家人平安的福神农历二月二十二是广泽尊王诞辰,广泽尊王又称保安尊王、郭圣王、圣王公,是传统习俗中护佑天下太平、家人平安的福神广泽尊王的来世今生农历二月,是春暖花开、春意正浓的好时节,因为处在春季的“中间”,所以又称“。
  • 四种食疗偏方任你挑(女人养生防病必吃3种零食)
  • 2024-09-27女人养生防病必吃3种零食不少女性喜欢吃零食,有一些嘴馋又怕垃圾食品有害健康的白领,会经常买点具有药效的零食放在办公室然而,部分中药零食冬天还是不能多吃,特别是以下的几种,适当食用就好1、龟苓膏中药成分:龟板、土伏苓、蒲公英、。
  • 运动过后肌肉特别酸痛(运动后肌肉酸痛怎么办)
  • 2024-09-27运动后肌肉酸痛怎么办辛苦工作的打工人迎来自己的休息日时,在家休息之余,很多人都会想着要好好放松一下,呼吸呼吸新鲜空气,并活动活动被舒服的筋骨这时候很多人会去爬山、骑车、打球或者干脆去健身房大汗淋漓来让自己的身体动起来但是。
  • 大年初一是什么星座(大年初一的星座介绍)
  • 2024-09-27大年初一的星座介绍是水瓶座农历01年正月初一是公历2001年1月24日星座的日期是按照新历来划分的而大年初一是阴历,阴历每年对应的新历日期都不一样,但是变动不大,大概在一月底至二月上、中旬之间因此大年初一所对应的星座一。
  • 张雨绮最大的软肋(张雨绮蠢在哪里)
  • 2024-09-27张雨绮蠢在哪里文|米粒妈(公众号米粒妈爱分享)这几天的新闻连起来看挺有意思的先说张雨绮和前夫的撕逼狗血剧吧,想必大家都有所耳闻了张雨绮前夫袁巴元曝光张雨绮在和他复合期间出轨,并曝光了多张私密的聊天记录为证张雨绮是否。
  • 香芹饺子馅怎么做好吃(香芹饺子馅做法)
  • 2024-09-27香芹饺子馅做法首先准备好芹菜、猪肉、还有一些调味料,将芹菜叶子去掉,将芹菜杆放在水中洗净,叶子也做汤,芹菜杆捞出控水切段锅中加入足量清水,烧开后,将芹菜段放入锅中,加入一些食盐和食用油,焯水处理焯水后等芹菜凉下来了。
  • 广深港高铁全线开通(广深港高铁将引入中心城区)
  • 2024-09-27广深港高铁将引入中心城区15日,广州市轨道交通一体化规划研究及广州东站综合交通枢纽规划项目开始招标,透露了众多重磅内容根据招标公告,广州要在粤港澳大湾区铁路规划框架下,对国铁网、城际网、市域铁路网、城市轨道交通网进行四网合一。
  • 菠菜豆腐的做法(怎样做菠菜豆腐)
  • 2024-09-27怎样做菠菜豆腐菠菜400克,豆腐300克,盐3克,酱油5克把摘干净的菠菜洗干净,要多洗几遍,看到洗菜的水变得青绿了才可以,注意根部,菠菜都是带着根的额,更得多搓洗几下菠菜会带着很多水分,控控,切起来不至于弄得到处是。
  • 上海青浦雷克萨斯(上海嘉定和凌雷克萨斯开业)
  • 2024-09-27上海嘉定和凌雷克萨斯开业7月9日,上海嘉定区首家雷克萨斯授权经销店——上海嘉定和凌雷克萨斯正式开业开业当天,厂家领导、嘉定园区领导、和通汽车集团领导、同城兄弟店总经理及众多嘉宾与媒体莅临现场,共同见证这一荣耀时刻上海嘉定和凌。
  • 微信电脑端怎么多开微信(微信电脑端如何实现多开)
  • 2024-09-27微信电脑端如何实现多开微信已然成为我们生活中不可或缺的一个社交软件,无论生活还是工作中都会用到微信可以跨平台,包括手机端、电脑端和网页端,使用起来非常的方便很多同学在办公室的电脑上都会安装一个微信,方便工作沟通电脑端打字快。
  • 团圆饭怎么拍出高级感(扮NEW家只需一块桌布)
  • 2024-09-27扮NEW家只需一块桌布新年将至,给家中添置什么物品能改变风格?有时候,只需要一块桌布,就能让空间充满新鲜感近年来,轻奢风、田园风、INS风的桌布都特别流行,新年换一张桌布,让生活更有仪式感,妥妥的热爱生活的表现※北欧风格大。