我们学习了很多机器学习算法,对应不同算法给出的结果不同,这种情况下我们听那个算法的结果呢?
我们完全可以把多个算法集中起来,让不同的算法对同一个问题都进行运算,看看结果,最终少数服从多数
生活中的集成学习:买东西找别人推荐,我们找很多人推荐,然后看他们投票,因为每一个人经历不同,视角不同,他们给出的决策原因就不同,我们集成更多人的意见,通常来讲,最终得到的决策很有可能最合适
病情确诊:我们去医院得到检查报告,能够得到患有什么疾病,需要有经验的医生来进行最终确诊,通常对于一些比较大的疾病来说我们就倾向多跑几个医院,多找几个大夫,对不同的人看看同一份检查报告的结果是怎么样的,对于重大疾病医院也会组织专家会诊来集合判断,最终得到结果
投票:少数服从多数
我们自己写一个集成学习代码并不难,我们选择几个算法,对同一个数据运行一下,最终判断少数服从多数
sk-learn 给出了结构 Voting Classifier
对于不同算法进行投票的分类器
使用这样的方式我们就可以很容易实现集成学习
我们给n_samples = 500, 默认是100
我们需要量大一些
noise=0.3这个相对较大,我们的数据点相应比较乱
随机种子random_state = 42
我们加载后分成训练和测试
我们先用逻辑回归
发现是0.863999999
我们使用SVM
我们使用决策树
我们现在用三种分类器来对其预测
不难理解这种方式就得到了投票
这是一个布尔向量
我们也可以换成整形向量
我们的y_predict,先看看10个,然后在看看得分
我们发现比三个都多
集成学习提高了我们继承准确度
这是我们手动的,SK-learn有接口
ensemble learning就是集成学习的意思
estimartors传入投票的算法
第一个元素是分类器,第二个元素是实例化
第二个参数voting='hard'
我们学习的这种方式就是hard,相应的还有soft
实例化了以后直接fit就好勒
我们看看评分
和之前手动是一样了0.896000000000000002
不过我们没有对投票的算法调参,我们可以先调参再一起使用来看最终的结果