机器学习:集成学习(集成学习思想、scikit-learn 中的集成分类器)
一、集成学习的思想
- 集成学习的思路:一个问题(如分类问题),让多种算法参与预测(如下图中的算法都可以解决分类问题),在多个预测结果中,选择出现最多的预测类别做为该样本的最终预测类别;
- 生活中的集成思维:
- 选择电影:10 个人中,如果有8个人觉得这个电影值得看,那么很多人就会跟进这个现象选择看这部电影;
二、scikit-learn 中的集成分类器
- scikit-learn 中封装的集成分类器:VotingClassifier
1)模拟集成学习操作
模拟数据集
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets # n_samples=500:表示生成 500 个样本;默认自动生成 100 个样本;
X, y = datasets.make_moons(n_samples=500, noise=0.3, random_state=42) from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)
- datasets.make_moons(n_samples=500):表示生成 500 个样本;默认自动生成 100 个样本;
使用逻辑回归算法分类器
from sklearn.linear_model import LogisticRegression log_clf = LogisticRegression()
log_clf.fit(X_train, y_train)
log_clf.score(X_test, y_test)
# 准确率:0.864使用 SVM 算法分类器
from sklearn.svm import SVC svm_clf = SVC()
svm_clf.fit(X_train, y_train)
svm_clf.score(X_test, y_test)
# 准确率:0.888使用决策树算法分类器
from sklearn.tree import DecisionTreeClassifier dt_clf = DecisionTreeClassifier()
dt_clf.fit(X_train, y_train)
dt_clf.score(X_test, y_test)
# 准确率:0.84- 对各个算法预测结果投票
y_predict1 = log_clf.predict(X_test)
y_predict2 = svm_clf.predict(X_test)
y_predict3 = dt_clf.predict(X_test) y_predict = np.array((y_predict1 + y_predict2 + y_predict3) >= 2, dtype='int')
- 投票方式:
- (y_predict1 + y_predict2 + y_predict3) >= 2
- 三种算法的预测结果中,只有当 2 个或 3 个的预测结果为 1 时,最终的预测结果才为 1;
- 查看投票结果的准确率
from sklearn.metrics import accuracy_score accuracy_score(y_test, y_predict)
# 准确率:0.896 - 采用集成学习思路得到的准确率比其它 3 中算法得到的准确率高;
二、scikit-learn 中的集成分类器
1)代码
from sklearn.ensemble import VotingClassifier
# 集成分类器 VotingClassifier 的参数:
# 1)estimators=[]:传入需要使用的算法,放在列表中,使用方式类似管道 Pipeline;
# 2)voting='hard':表示选择最终预测结果的方式,以出现最多的分类结果作为最终的预测结果;
# 正常情况下,需要对所选择的算法进行调参;
voting_clf = VotingClassifier(estimators=[
('log_clf', LogisticRegression()),
('svm_clf', SVC()),
('dt_clf', DecisionTreeClassifier())
], voting='hard')
voting_clf.fit(X_train, y_train)
voting_clf.score(X_test, y_test)
# 准确率:0.896- 注意
- 使用方式如以上红色代码;
- 参数 estimators=[ ]:传入需要使用的算法,放在列表中,使用方式类似管道 Pipeline;
- 参数 voting='hard':表示选择最终预测结果的方式,以出现最多的分类结果作为最终的预测结果;
- 正常情况下,需要对所选择的算法进行调参;
机器学习:集成学习(集成学习思想、scikit-learn 中的集成分类器)的更多相关文章
- (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探
一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...
- (原创)(四)机器学习笔记之Scikit Learn的Logistic回归初探
目录 5.3 使用LogisticRegressionCV进行正则化的 Logistic Regression 参数调优 一.Scikit Learn中有关logistics回归函数的介绍 1. 交叉 ...
- sklearn中调用集成学习算法
1.集成学习是指对于同一个基础数据集使用不同的机器学习算法进行训练,最后结合不同的算法给出的意见进行决策,这个方法兼顾了许多算法的"意见",比较全面,因此在机器学习领域也使用地非常 ...
- webService学习之路(三):springMVC集成CXF后调用已知的wsdl接口
webService学习之路一:讲解了通过传统方式怎么发布及调用webservice webService学习之路二:讲解了SpringMVC和CXF的集成及快速发布webservice 本篇文章将讲 ...
- Quartz学习——SSMM(Spring+SpringMVC+Mybatis+Mysql)和Quartz集成详解(转)
通过前面的学习,你可能大致了解了Quartz,本篇博文为你打开学习SSMM+Quartz的旅程!欢迎上车,开始美好的旅程! 本篇是在SSM框架基础上进行的. 参考文章: 1.Quartz学习——Qua ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料【转】
转自:机器学习(Machine Learning)&深度学习(Deep Learning)资料 <Brief History of Machine Learning> 介绍:这是一 ...
- 机器学习(Machine Learning)&深度学习(Deep Learning)资料汇总 (上)
转载:http://dataunion.org/8463.html?utm_source=tuicool&utm_medium=referral <Brief History of Ma ...
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- 视觉机器学习读书笔记--------BP学习
反向传播算法(Back-Propagtion Algorithm)即BP学习属于监督式学习算法,是非常重要的一种人工神经网络学习方法,常被用来训练前馈型多层感知器神经网络. 一.BP学习原理 1.前馈 ...
随机推荐
- Qt编译器
有两种,MSVC和MINGW Qt 中有两种方式编译,一种是MinGW ,另一种MSVC. MSVC是指微软的VC编译器: MingGW是指是Minimalist GNU on Windows的缩写. ...
- Golang html encoding解析
自动解析html页面的编码格式: 需要依赖 golang.org/x/text 和 golang.org/x/net 这两个外部库 package main import ( "net/ht ...
- poj 2186 Popular Cows 【强连通分量Tarjan算法 + 树问题】
题目地址:http://poj.org/problem?id=2186 Popular Cows Time Limit: 2000MS Memory Limit: 65536K Total Sub ...
- Complex social network Partition for Balanced Subnetworks---Hao Lan Zhang,Jiming Liu,Chunyu Feng,Chaoyi Pang,Tongliang Li,Jing He阅读
摘要:Abstract—Complex social network analysis methods have been applied extensively in various domains ...
- QT5中如何使用QFtp类
QT5中如何使用QFtp类 http://2662597.blog.51cto.com/2652597/1279806 由于QT5对QML的支持有很大的改进,所以打算将原来基于QT4的程序移植到QT5 ...
- 爬虫之解析库-----re、beautifulsoup、pyquery
一.介绍 Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库.它能够通过你喜欢的转换器实现惯用的文档导航,查找,修改文档的方式.Beautiful Soup会帮你 ...
- lambda 中if-elif-if
一般情况下: if 条件1: 语句1 elif 条件2: 语句2 else: 语句3 但如果要使用lambda一行表示if多条件,则: lambda x: 语句1 if 条件1 else 语句2 if ...
- rehash过程
步骤 1) 首先创建一个比现有哈希表更大的新哈希表(expand)2) 然后将旧哈希表的所有元素都迁移到新哈希表去(rehash) dictAdd 对字典添加元素的时候, _dictExpandI ...
- 《Advanced Bash-scripting Guide》学习(七):描述、列表和确定是否可以安装一个rpm包
本文所选的例子来自于<Advanced Bash-scripting Gudie>一书,译者 杨春敏 黄毅 Example 3-2.将一个代码块的结果保存到文件 #!/bin/bash # ...
- keras中无法下载 https://s3.amazonaws.com/img-datasets/mnist.npz 解决方法
网址:https://s3.amazonaws.com/img-datasets/mnist.npz,由于显而易见的原因,无法访问. npz实际上是numpy提供的数组存储方式,简单的可看做是一系列n ...