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. Mysql查看建表语句以及修改引擎

    更多内容推荐微信公众号,欢迎关注: 1 查看系统支持的存储引擎 show engines; 2 查看表使用的存储引擎 两种方法: a.show table status from db_name wh ...

  2. jQuery核心函数——(一)

  3. solr配置中文分词器——(十二)

    aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqcAAAGzCAIAAACdKClDAAAgAElEQVR4nOydd5gUxdbGx5xASZKXLB

  4. 查看oracle实例名

    select name from v$database; show parameter service_names;

  5. shell监控网站是否自动运行并自动重启【原创】

    shell监控网站是否自动运行并自动重启 #!/bin/bash -T www.baidu.com ];then echo "`date` 网站访问正常!" >> /r ...

  6. Focal Loss笔记

    论文:<Focal Loss for Dense Object Detection> Focal Loss 是何恺明设计的为了解决one-stage目标检测在训练阶段前景类和背景类极度不均 ...

  7. sed实例收集

    url:http://blog.csdn.net/hepeng597/article/details/7852468 一.元字符集    1)^锚定行的开始 如:/^sed/匹配所有以sed开头的行. ...

  8. 05 Go 1.5 Release Notes

    Go 1.5 Release Notes Introduction to Go 1.5 Changes to the language Map literals The Implementation ...

  9. thinkphp辅助方法,数据库操作

  10. sqlserver sp_spaceused用法

    sp_spaceused显示行数.保留的磁盘空间以及当前数据库中的表所使用的磁盘空间,或显示由整个数据库保留和使用的磁盘空间. 语法sp_spaceused [[@objname =] 'objnam ...