python3 学习使用随机森林分类器 梯度提升决策树分类 的api,并将他们和单一决策树预测结果做出对比

附上我的git,欢迎大家来参考我其他分类器的代码: https://github.com/linyi0604/MachineLearning

 import pandas as pd
from sklearn.cross_validation import train_test_split
from sklearn.feature_extraction import DictVectorizer
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import classification_report
from sklearn.ensemble import RandomForestClassifier, GradientBoostingClassifier '''
集成分类器:
综合考量多个分类器的预测结果做出考量。
这种综合考量大体上分两种:
1 搭建多个独立的分类模型,然后通过投票的方式 比如 随机森林分类器
随机森林在训练数据上同时搭建多棵决策树,这些决策树在构建的时候会放弃唯一算法,随机选取特征
2 按照一定次序搭建多个分类模型,
他们之间存在依赖关系,每一个后续模型的加入都需要现有模型的综合性能贡献,
从多个较弱的分类器搭建出一个较为强大的分类器,比如梯度提升决策树
提督森林决策树在建立的时候尽可能降低成体在拟合数据上的误差。 下面将对比 单一决策树 随机森林 梯度提升决策树 的预测情况 ''' '''
1 准备数据
'''
# 读取泰坦尼克乘客数据,已经从互联网下载到本地
titanic = pd.read_csv("./data/titanic/titanic.txt")
# 观察数据发现有缺失现象
# print(titanic.head()) # 提取关键特征,sex, age, pclass都很有可能影响是否幸免
x = titanic[['pclass', 'age', 'sex']]
y = titanic['survived']
# 查看当前选择的特征
# print(x.info())
'''
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1313 entries, 0 to 1312
Data columns (total 3 columns):
pclass 1313 non-null object
age 633 non-null float64
sex 1313 non-null object
dtypes: float64(1), object(2)
memory usage: 30.9+ KB
None
'''
# age数据列 只有633个,对于空缺的 采用平均数或者中位数进行补充 希望对模型影响小
x['age'].fillna(x['age'].mean(), inplace=True) '''
2 数据分割
'''
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.25, random_state=33)
# 使用特征转换器进行特征抽取
vec = DictVectorizer()
# 类别型的数据会抽离出来 数据型的会保持不变
x_train = vec.fit_transform(x_train.to_dict(orient="record"))
# print(vec.feature_names_) # ['age', 'pclass=1st', 'pclass=2nd', 'pclass=3rd', 'sex=female', 'sex=male']
x_test = vec.transform(x_test.to_dict(orient="record")) '''
3.1 单一决策树 训练模型 进行预测
'''
# 初始化决策树分类器
dtc = DecisionTreeClassifier()
# 训练
dtc.fit(x_train, y_train)
# 预测 保存结果
dtc_y_predict = dtc.predict(x_test) '''
3.2 使用随机森林 训练模型 进行预测
'''
# 初始化随机森林分类器
rfc = RandomForestClassifier()
# 训练
rfc.fit(x_train, y_train)
# 预测
rfc_y_predict = rfc.predict(x_test) '''
3.3 使用梯度提升决策树进行模型训练和预测
'''
# 初始化分类器
gbc = GradientBoostingClassifier()
# 训练
gbc.fit(x_train, y_train)
# 预测
gbc_y_predict = gbc.predict(x_test) '''
4 模型评估
'''
print("单一决策树准确度:", dtc.score(x_test, y_test))
print("其他指标:\n", classification_report(dtc_y_predict, y_test, target_names=['died', 'survived'])) print("随机森林准确度:", rfc.score(x_test, y_test))
print("其他指标:\n", classification_report(rfc_y_predict, y_test, target_names=['died', 'survived'])) print("梯度提升决策树准确度:", gbc.score(x_test, y_test))
print("其他指标:\n", classification_report(gbc_y_predict, y_test, target_names=['died', 'survived'])) '''
单一决策树准确度: 0.7811550151975684
其他指标:
precision recall f1-score support died 0.91 0.78 0.84 236
survived 0.58 0.80 0.67 93 avg / total 0.81 0.78 0.79 329 随机森林准确度: 0.78419452887538
其他指标:
precision recall f1-score support died 0.91 0.78 0.84 237
survived 0.58 0.80 0.68 92 avg / total 0.82 0.78 0.79 329 梯度提升决策树准确度: 0.790273556231003
其他指标:
precision recall f1-score support died 0.92 0.78 0.84 239
survived 0.58 0.82 0.68 90 avg / total 0.83 0.79 0.80 329 '''

机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者的更多相关文章

  1. 机器学习之路: python 线性回归LinearRegression, 随机参数回归SGDRegressor 预测波士顿房价

    python3学习使用api 线性回归,和 随机参数回归 git: https://github.com/linyi0604/MachineLearning from sklearn.datasets ...

  2. 吴裕雄 python 机器学习——集成学习随机森林RandomForestRegressor回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  3. 吴裕雄 python 机器学习——集成学习随机森林RandomForestClassifier分类模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  4. Python 实现的随机森林

    随机森林是一个高度灵活的机器学习方法,拥有广泛的应用前景,从市场营销到医疗保健保险. 既可以用来做市场营销模拟的建模,统计客户来源,保留和流失.也可用来预测疾病的风险和病患者的易感性. 随机森林是一个 ...

  5. Spark2.0机器学习系列之6:GBDT(梯度提升决策树)、GBDT与随机森林差异、参数调试及Scikit代码分析

    概念梳理 GBDT的别称 GBDT(Gradient Boost Decision Tree),梯度提升决策树.     GBDT这个算法还有一些其他的名字,比如说MART(Multiple Addi ...

  6. 吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingRegressor回归模型

    import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...

  7. chapter02 三种决策树模型:单一决策树、随机森林、GBDT(梯度提升决策树) 预测泰坦尼克号乘客生还情况

    单一标准的决策树:会根每维特征对预测结果的影响程度进行排序,进而决定不同特征从上至下构建分类节点的顺序.Random Forest Classifier:使用相同的训练样本同时搭建多个独立的分类模型, ...

  8. [机器学习]梯度提升决策树--GBDT

    概述 GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由 ...

  9. 【深度森林第三弹】周志华等提出梯度提升决策树再胜DNN

    [深度森林第三弹]周志华等提出梯度提升决策树再胜DNN   技术小能手 2018-06-04 14:39:46 浏览848 分布式 性能 神经网络   还记得周志华教授等人的“深度森林”论文吗?今天, ...

随机推荐

  1. HDU 1994 利息计算 数学题

    解题报告:算利息的,不过一开始格式控制符里面少写了一个%lf,一直没看到,愣是没找到错误,唉! #include<cstdio> int main() { int T; scanf(&qu ...

  2. node.js、git、bootstrap等安装配置

    纯记录 一,安装node.js 1 官方网址 http://nodejs.org/  点击install 下载node-v0.10.22-x86.msi 2 安装,修改安装目录到d盘,一路next,无 ...

  3. Spring4笔记5--基于注解的DI(依赖注入)

    基于注解的DI(依赖注入): 对于 DI 使用注解,将不再需要在 Spring 配置文件中声明 Bean 实例.只需要在 Spring 配置文件中配置组件扫描器,用于在指定的基本包中扫描注解. < ...

  4. 使用solr批量导入mysql数据库,以及Unable to read: dataimport.properties等坑

    折腾了一下午终于成功了!先放一张成功图: 成功把mysql的数据添加进去了,我这里是整合了tomcat9,整合步骤挺麻烦的,百度一大堆! 这里主要介绍批量导入数据,这里有些坑,所以记录一下: 步骤: ...

  5. jQuery插件之ajaxFileUpload(异步上传图片并实时显示,并解决onchange后ajaxFileUpload失效问题)

    参考学习: 第一篇:http://www.cnblogs.com/kissdodog/archive/2012/12/15/2819025.html 第二篇:http://www.jb51.net/a ...

  6. vs2012 连接oracle11g 及数据的insert及select 的总结

    下载链接Oracle 11g所需的驱动ODTwithODAC1120320_32bit,下载链接为http://www.oracle.com/technetwork/topics/dotnet/uti ...

  7. nfs挂载出错:mount.nfs: access denied by server while mounting

    这个问题就是服务器不允许客户端去挂载,那么修改服务端的权限 $ sudo vi /etc/hosts.deny 文本末添加 ### NFS DAEMONS portmap: ALL lockd: AL ...

  8. SQLAlchemy-对象关系教程ORM-连接,子查询

    对象关系教程ORM-连接 一:内连接 方法一: for u, a in session.query(User, Address).\ filter(User.id==Address.user_id). ...

  9. ASP .Net Core系统部署到SUSE 16 Linux Enterprise Server 12 SP2 64 具体方案

    .Net Core 部署到 SUSE 16 Linux Enterprise Server 12 SP2 64 位中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk ...

  10. java基础46 IO流技术(输出字符流/缓冲输出字符流)

    一.输出字符流 1.1.输出字符流体系 --------| Writer:输出字符流的基类(抽象类)  ----------| FileWriter:向文件输出数据输出字符流(把程序中的数据写到硬盘中 ...