常用机器学习分类算法(机器学习中集成学习)
常用机器学习分类算法(机器学习中集成学习)
2024-11-22 04:32:15  作者:散了酒香  网址: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)))

最后


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

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

  • 防烫防油免洗餐桌垫(无色无味餐桌垫)
  • 2024-11-22无色无味餐桌垫餐桌是家里重要的家具之一,少则几百,多则数千上万,如果不小心撞伤、烫坏、刮花还真是很让人心痛的有些朋友就会给餐桌铺上餐桌布,保护餐桌的同时还能起到一定的装饰效果不过,有些朋友会担心普通餐桌布不防水也不。
  • 新生儿应补充维生素d还是d3(宝宝补充维生素D)
  • 2024-11-22宝宝补充维生素D维生素D具有预防和抗佝偻病的作用,市面上常见的有维生素D2、维生素D3还有维生素AD,有的宝宝吃的是维生素D,有的宝宝吃的是维生素AD,到底哪一种好呢?维生素D2和维生素D3有何异同?选哪个好?维生素。
  • 四六级分高低对考研有影响吗 四六级成绩会影响考研吗
  • 2024-11-22四六级分高低对考研有影响吗 四六级成绩会影响考研吗今天,6月份大学英语四六级成绩终于公布了不少同学咨询宝哥:四级(六级)没过是不是影响考研?关于这个问题我们需要辩证来看我个人认为:四六级成绩好,可以锦上添花但绝不是雪中送炭不然,考研英语意义何在?因此。
  • 古剑奇谭攻略(需要怎么玩)
  • 2024-11-22需要怎么玩无叶镇,原气候恶劣,水源十分稀缺无叶镇作为荒狼原上唯一的绿洲,集商贸水源为一体,自是被各方势力视为珍贵财富无论是生意遍及西域的商会,还是大漠中的沙蝎一族,都想将其据为己有因此无叶镇曾展开过无休止的火并。
  • 微信视频怎么绑定美颜(你知道吗)
  • 2024-11-22你知道吗首先,我们先去将软件下载下来,点击页面底部位置的安装按钮,开始进行下载然后,我们在自己的手机桌面上找到系统自带的工具这个文件夹,点击进入进入到工具这个页面中之后,在该页面中我们找到设置这个软件,点击进。
  • 这样的狼人杀你玩过吗(狼人杀还能玩得这么搞笑)
  • 2024-11-22狼人杀还能玩得这么搞笑这是一个月黑风高的夜晚,11位老铁虚席而坐,其中有老司机,有新司机,有装成新司机的老司机,有装成新司机的老司机,嗑着瓜子抠着脚准备着“哦对了,上局你背锅,做上帝去”那就只剩下10个人了,玩预言家/女巫。
  • 刘涛哪里人刘涛个人资料简介(刘涛开始认真搞事业)
  • 2024-11-22刘涛开始认真搞事业如今什么样的剧集最容易火呢?大致可以分为两类,古装奇幻剧和甜宠恋爱剧,流量明星基本都是从这类型剧集中走出来的,年轻人追捧这样的剧也不能说不对,毕竟存在都是有道理的,但是总看这样的剧,似乎也会看腻,尤其。
  • lol新版妖姬连招顺序(天赋你真的会选择吗)
  • 2024-11-22天赋你真的会选择吗大家好,我是兔子攻略组的大马猴今天给大家出一个T0级别组合:金克丝璐璐,主要是帮助大家在单排或者组排时,拿出金克丝璐璐该如何去相互打配合,尤其是单排的玩家,双人路的配合尤为重要,一旦有一方的思想出现分。
  • 4399游戏盒在哪安装(这个安装方法你知道吗)
  • 2024-11-22这个安装方法你知道吗需要一个模拟器,选择的是腾讯手游助手,点击腾讯手游助手左侧的“全部游戏”在最上方搜索4399游戏盒,下载完毕后点击“安装”,会跳出手游助手的标准引擎耐心等待一会即可出现4399游戏和的模拟界面,在模拟。
  • 私域社群运营六个步骤(微信群建对了吗)
  • 2024-11-22微信群建对了吗社群是私域流量运营最常用的方式之一,甚至有些商家将群运营就视作私域流量运营,这可见社群在一般的私域运营中重要性看看我们的微信,或许会发现微信群的消息活跃超过了我们好友消息的活跃打开微信总是发现在最前面。
  • 无锡新区韩国人开的烤肉店(无锡荟聚的这家烤肉店)
  • 2024-11-22无锡荟聚的这家烤肉店金秋十月,气温渐凉,无锡这两天可以说是实现了由夏到冬的极限跨越,小伙伴们纷纷穿上了厚厚的外套,但是无论天气如何,品尝美食的脚步,我们永不停止,今天就来盘点一下位于无锡荟聚的一家烤肉店—小胖墩东北烤肉招。