常用机器学习分类算法(机器学习中集成学习)
常用机器学习分类算法(机器学习中集成学习)
2024-09-27 07:04:51  作者:散了酒香  网址:https://m.xinb2b.cn/sport/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)))

最后


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

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

  • 古言古早文推荐:3本古言文妻心如故本王想静静一枝红杏纸上春
  • 2024-09-28古言古早文推荐:3本古言文妻心如故本王想静静一枝红杏纸上春一、《妻心如故》作者:雾矢翊文章进度:2015-03-03完结全文字数:900566字章数:190章文章类型:原创-言情-架空历史-爱情作品视角:女主作品风格:轻松主角:严青竹(阿竹)、陆禹内容标签:。
  • 最好的学习方法是思维导图(如何通过制作思维导图)
  • 2024-09-28如何通过制作思维导图有读者看了我之前文章,问我怎么有效找出文章的核心思想要回答这个问题,先了解一下如何运用思维导图这个工具思维导图是表达发散性思维的有效图形思维工具它运用图文并重的技巧,把各级主题的关系用相互隶属和相关的。
  • 韩国金姓富豪(韩国首富金凡秀)
  • 2024-09-28韩国首富金凡秀一、脚踩三星家族,以一己之力干翻所有财阀,白手起家最终问鼎韩国首富的金凡秀,是谱写南韩奇迹的神来之笔就在今年公布的亿万富豪榜单中,刚从大牢里出来的三星太子李在镕,以107亿的身价破天荒地掉出了韩国首富。
  • 豇豆肉末怎么炒才好吃(四种豇豆炒肉末的家常做法)
  • 2024-09-28四种豇豆炒肉末的家常做法豇豆炒肉末中的豇豆怎么处理才能更好的入味呢?下面分享四道豇豆炒肉末的做法,看看哪道更符合你的口味​​​做法一:豇豆掐去2头,改刀切小段,清洗干净,放入清水锅中,将豇豆焯水断生,捞出沥水准备一小块五花肉。
  • 产后使用束腹带的正确方法(正确使用束腹带)
  • 2024-09-28正确使用束腹带宝宝出生了,妈妈在满心的欢喜同时,也开始担心自己身材走样了怀孕时肚皮被撑开,产后变得松松垮垮,这时候,新晋妈妈们就需要使用产后收腹带了而产后束缚带要用多久呢?产后收腹带要用多久怀孕期间,子宫变大、腹壁。
  • 为什么不建议保温杯泡水(吓人保温杯泡这些)
  • 2024-09-28吓人保温杯泡这些年轻人越来越注重养生,保温杯里泡枸杞,已经成为年轻人中的一种“时尚”但是你知道吗?保温杯用得不好,不仅不养生,还可能对健康有害!到底怎么回事,一起来了解一下!6种饮品千万别放在保温杯1、酸性饮品(如酸。
  • yyds是个什么东西(yyds是什么你用对了吗)
  • 2024-09-28yyds是什么你用对了吗最近赶着网络语言的浪潮来的yyds你遇见了嘛?不少网络平台都会看到yyds的四个字母,随便打开一个爱豆MV更是满屏飘着,可是yyds到底是什么意思呢?你有用对吗?yyds:这个词最根本的来源是“山泥若。
  • excel基础入门教程(从6个步骤着手)
  • 2024-09-28从6个步骤着手安装完成后启动Excel软件,新建一个空白Excel表格,以示例进行说明基本操作比如要进行汇总总成绩,首先选中单元格,点击“公式-插入函数”,选中sum函数,点击确定,输入计算范围即可鼠标移动至单元格。
  • 萝卜包饺子怎么做才好吃(萝卜包饺子如何做才好吃)
  • 2024-09-28萝卜包饺子如何做才好吃食材:猪肉300克、萝卜半个、大葱1根、油适量、盐适量、香油适量、酱油适量将萝卜去皮,洗干净,擦成丝备用锅内放适量水,烧开放入擦好的萝卜丝,水开后捞出萝卜丝,攥干水,备用大葱切成葱末,备用买现成的肉馅。
  • 十天瘦脸手法图解(如何快速有效瘦脸)
  • 2024-09-28如何快速有效瘦脸近日有患有咨询,脸大该怎么办?唱歌能瘦脸吗?吃口香糖可以瘦脸吗?拍打脸能瘦脸吗?好大一串问题,我也是一头雾水作为一名专业的整形医师,没有通过实践的方法或者是无效的方法,我是不能推荐的,这是职业要求上网。