机器学习之路:python 集成分类器 随机森林分类RandomForestClassifier 梯度提升决策树分类GradientBoostingClassifier 预测泰坦尼克号幸存者
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 预测泰坦尼克号幸存者的更多相关文章
- 机器学习之路: python 线性回归LinearRegression, 随机参数回归SGDRegressor 预测波士顿房价
python3学习使用api 线性回归,和 随机参数回归 git: https://github.com/linyi0604/MachineLearning from sklearn.datasets ...
- 吴裕雄 python 机器学习——集成学习随机森林RandomForestRegressor回归模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...
- 吴裕雄 python 机器学习——集成学习随机森林RandomForestClassifier分类模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...
- Python 实现的随机森林
随机森林是一个高度灵活的机器学习方法,拥有广泛的应用前景,从市场营销到医疗保健保险. 既可以用来做市场营销模拟的建模,统计客户来源,保留和流失.也可用来预测疾病的风险和病患者的易感性. 随机森林是一个 ...
- Spark2.0机器学习系列之6:GBDT(梯度提升决策树)、GBDT与随机森林差异、参数调试及Scikit代码分析
概念梳理 GBDT的别称 GBDT(Gradient Boost Decision Tree),梯度提升决策树. GBDT这个算法还有一些其他的名字,比如说MART(Multiple Addi ...
- 吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingRegressor回归模型
import numpy as np import matplotlib.pyplot as plt from sklearn import datasets,ensemble from sklear ...
- chapter02 三种决策树模型:单一决策树、随机森林、GBDT(梯度提升决策树) 预测泰坦尼克号乘客生还情况
单一标准的决策树:会根每维特征对预测结果的影响程度进行排序,进而决定不同特征从上至下构建分类节点的顺序.Random Forest Classifier:使用相同的训练样本同时搭建多个独立的分类模型, ...
- [机器学习]梯度提升决策树--GBDT
概述 GBDT(Gradient Boosting Decision Tree) 又叫 MART(Multiple Additive Regression Tree),是一种迭代的决策树算法,该算法由 ...
- 【深度森林第三弹】周志华等提出梯度提升决策树再胜DNN
[深度森林第三弹]周志华等提出梯度提升决策树再胜DNN 技术小能手 2018-06-04 14:39:46 浏览848 分布式 性能 神经网络 还记得周志华教授等人的“深度森林”论文吗?今天, ...
随机推荐
- 训练赛第三场A题 zoj 559
题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=2559 解题报告:比赛的时候的想法是可以确定至少有两对相切的圆,所 ...
- linux查看及设置别名,权限,生成ssh秘钥
1.alias :查看系统中所有的命令别名 2.设定别名 alias 别名='原命令' 3.删除别名 unalias 别名 4.使别名永久生效 vi ~/.bashrc 写入这个文件中即可永 ...
- python作业ATM(第五周)
作业需求: 额度 15000或自定义. 实现购物商城,买东西加入 购物车,调用信用卡接口结账. 可以提现,手续费5%. 支持多账户登录. 支持账户间转账. 记录每月日常消费流水. 提供还款接口. AT ...
- 关于onConfigurationChanged
这两天测试app时,发现一个奇怪问题,app在启动后,Activity会onCreate两次,起初以为是横屏设置导致,随即在Activity中添加了android:configChanges=&quo ...
- 音频增益响度分析 ReplayGain 附完整C代码示例【转】
转自:http://www.cnblogs.com/cpuimage/p/8846951.html 人们所熟知的图像方面的3A算法有: AF自动对焦(Automatic Focus)自动对焦即调节摄像 ...
- HDU 6212 Zuma 2017青岛网络赛 区间DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=6212 解法:看了眼题就发现这个BZOJ 1032不是一毛一样?但是BZOJ上那是个巨坑,数据有错,原来 ...
- RabbitMQ--Hello world!(一)
Introduction RabbitMQ is a message broker. The principal idea is pretty simple: it accepts and forwa ...
- maven scope 'provided' 和 ‘compile’的区别
解释 其实这个问题很简单. 对于scope=compile的情况(默认scope),也就是说这个项目在编译,测试,运行阶段都需要这个artifact(模块)对应的jar包在classpath中. 而对 ...
- SQL2008数据库导出到SQL2000全部步骤过程
2008转到2000的步骤 1. 在sql2008上生成for 2000版本的数据库脚本 -- 打开"对象资源管理器"(没有的话按F8), 连接到你的实例, 右键要转到2000的库 ...
- sql server2012 企业版 百度云下载
链接: https://pan.baidu.com/s/1j7a6RWwpvSzG-sF7Dnexfw 提取码: 关注公众号[GitHubCN]回复获取