机器学习“傻瓜式”理解(17)集成学习

集成学习

所谓的集成学习,举个栗子来说,假如我们需要解决一个分类问题,我们不仅仅通过例如KNN这样的算法来进行解决,我们可以让多种算法参与分类预测的过程,例如下图:
在这里插入图片描述
再举个栗子来说,假如我们5个人准备去吃饭,在面临选择店铺时,假如有4个人都觉得A店的食物物美价廉,我们就会选择A店作为我们最终的吃饭的店铺,这就是生活中的集成思维的栗子。
scikit-learn中的集成分类代码:

import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets

from sklearn.model_selection import train_test_split

X,y = datasets.make_moons(n_samples=500,noise=0.3,random_state=42)
X_train,X_test,y_train,y_test = train_test_split(X,y,random_state=42)


# sklearn中的集成分类器
from sklearn.ensemble import VotingClassifier

from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score

voting_cif = VotingClassifier(estimators=[
    ('log_cif',LogisticRegression()),
    ('svc',SVC()),
    ('dt_clf',DecisionTreeClassifier())
],voting='hard')


voting_cif.fit(X_train,y_train)
voting_cif.score(X_test,y_test)  # 结果为0.897

分类
根据上面的代码我们可知道,最终的集成学习方式我们大体上可以归纳为这么几种,
①hard voting classifier 根据少数服从多数的形式定预测结果
在这里插入图片描述
②soft voting classifier 根据得出结果的概率的平均值来定预测结果
在这里插入图片描述
soft的使用:

voting_cif = VotingClassifier(estimators=[
    ('log_cif',LogisticRegression()),
    ('svc',SVC()),
    ('dt_clf',DecisionTreeClassifier())
],voting='hard')


voting_cif.fit(X_train,y_train)
voting_cif.score(X_test,y_test)  # 结果为0.912

其中:SVC中参数probability=true表示返回样本为各个类别的概率

抽样方式
为了提高准确率,我们需要更多的子模型参与进来,可分为两种方式,一种为Bagging(放回取样),另一种方式为Pasting(不放回取样)。
但是在Bagging中会出现有37%的数据永远取不到,我们可以直接使用这部分数据作为最终的验证数据集,这样便省去了train_test_split的过程。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值