Python+随机森林
随机森林
随机森林定义
随机森林(Random Forest,简称RF),是在以决策树为基础学习器构建Bagging集成的基础上引入了随机属性选择。即由许多决策树随机构成,其中每棵决策树之间没有关联。当新样本输入时,由森林中的每个决策树进行分析判断,最后该样本属于选择最多的那一类。
随机森林的优点
1、随机森林简单,容易实现,计算开销小。
2、随机森林在数据集上表现良好。
3、随机森林的随机性,使得随机森林不容易陷入过拟合,具有很好的抗噪声能力。
4、随机森林能够处理高维度的数据,且不用进行特征选择。
5、既能处理离散型数据,也能处理连续型数据。
随机森林算法
随机森林算法是Bagging算法的进化版。随机森林基于决策树通过随机选择结点上的部分特征,从中选择一个最优的特征来做决策树的左右划分。
输入为样本集D={(x,y1),(x2,y2),…(xm,ym)}D={(x,y1),(x2,y2),…(xm,ym)},弱分类器迭代次数T。
输出为最终的强分类器f(x)
实例操作
本部分主要介绍了随机森林在python语言中的实现过程。本次实验采用了坦泰尼克号乘客是否存活数据集, 目的通过数据集中给出的一些基本特性,应用到模型中,看看模型的准确性如何。
案例主要涉及以下六个小部分:
∙\bullet∙ 数据集介绍
∙\bullet∙ 导入数据
∙\bullet∙ 数据探索与预处理
∙\bullet∙ 随机森林建模
数据集介绍
泰坦尼克号的沉没是历史上最臭名昭著的沉船之一。1912年4月15日,泰坦尼克号在首航时撞上冰山沉没,2224名乘客和船员中1502人遇难。这一耸人听闻的悲剧震惊了国际社会,并导致了对船舶更好的安全规定。这次沉船事故造成如此多人死亡的原因之一是船上没有足够的救生艇运载乘客和船员。虽然在沉船中幸存有一些运气因素,但一些群体的人比其他人更有可能幸存,比如妇女、儿童和上层阶级。我们需要的是运用机器学习的工具来预测哪些乘客在灾难中幸存下来。
变量名称 | 变量解释 |
---|---|
PassengerId | 乘客ID |
Survived | 获救情况(1为获救,0为未获救) |
Pclass | 乘客等级(1/2/3等舱位) |
Name | 乘客姓名 |
Sex | 性别 |
Age | 年龄 |
SibSp | 堂兄弟/妹个数 |
Parch | 父母与小孩个数 |
Ticket | 船票信息 |
Fare | 票价 |
Cabin | 客舱 |
Embarked | 登船港口 |
数据导入
训练数据集有12列891行
测试集有11列418行
# 导入模块
import pandas as pd
# 读入数据
train = pd.read_csv("F:/data/kaggle titanic/train.csv")
test = pd.read_csv("F:/data/kaggle titanic/test.csv")
数据探索与预处理
# 统计各类信息的缺失的总体情况
print(train.info(),test.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId 891 non-null int64
Survived 891 non-null int64
Pclass 891 non-null int64
Name 891 non-null object
Sex 891 non-null object
Age 714 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Ticket 891 non-null object
Fare 891 non-null float64
Cabin 204 non-null object
Embarked 889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 418 entries, 0 to 417
Data columns (total 11 columns):
PassengerId 418 non-null int64
Pclass 418 non-null int64
Name 418 non-null object
Sex 418 non-null object
Age 332 non-null float64
SibSp 418 non-null int64
Parch 418 non-null int64
Ticket 418 non-null object
Fare 417 non-null float64
Cabin 91 non-null object
Embarked 418 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 36.0+ KB
None None
其中不难看出Age,Cabin,Fare和Embarked存在缺失值。我们可以对存在缺失值的数据进行处理。
# 缺失值处理,删除无关变量
train = train.fillna(method = "bfill")
test = test.fillna(method = "pad")
train.drop(['PassengerId','Name','Ticket','Cabin'],axis=1,inplace=True)
test.drop(['PassengerId','Name','Ticket','Cabin'],axis=1,inplace=True)
# 再次统计数据
print(train.info(),test.info())
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 8 columns):
Survived 891 non-null int64
Pclass 891 non-null int64
Sex 891 non-null object
Age 891 non-null float64
SibSp 891 non-null int64
Parch 891 non-null int64
Fare 891 non-null float64
Embarked 891 non-null object
dtypes: float64(2), int64(4), object(2)
memory usage: 55.8+ KB
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 418 entries, 0 to 417
Data columns (total 7 columns):
Pclass 418 non-null int64
Sex 418 non-null object
Age 418 non-null float64
SibSp 418 non-null int64
Parch 418 non-null int64
Fare 418 non-null float64
Embarked 418 non-null object
dtypes: float64(2), int64(3), object(2)
memory usage: 22.9+ KB
None None
# 哑变量处理
train = pd.get_dummies(train)
test = pd.get_dummies(test) train.drop("Sex_male",axis=1,inplace=True)
test.drop("Sex_male",axis=1,inplace=True)
# 用随机森林进行分类
from sklearn.ensemble import RandomForestClassifier
x,y = train.ix[:,1:10],train.ix[:,0]
rf = RandomForestClassifier(n_estimators=22, max_depth=4)
rf.fit(x,y)
y_predict = rf.predict(test)
result = pd.DataFrame(y_predict)
result.head()
0 | |
---|---|
0 | 0 |
1 | 0 |
2 | 0 |
3 | 0 |
4 | 0 |
Python+随机森林相关推荐
- Python 随机森林特征重要度
Python 随机森林特征重要度 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 随机森林特征重要度简介 决策树的优点是通过树 ...
- Python 随机森林分类
Python 随机森林分类 1 声明 本文的数据来自网络,部分代码也有所参照,这里做了注释和延伸,旨在技术交流,如有冒犯之处请联系博主及时处理. 2 决策树分类简介 相关概念见下: 决策树的最大问题是 ...
- python 随机森林分类 DecisionTreeClassifier 随机搜索优化参数 GridSearchCV
@python 随机森林分类模型 随机优化参数 学习笔记 随机森林 1.随机森林模型 随机森林算法是基于决策树算法的Begging优化版本,通过集成学习的思想将多棵树集成的一种算法,它的基本单元是决策 ...
- python与算法社区_【Python算法】分类与预测——Python随机森林
[Python算法]分类与预测--Python随机森林 1.随机森林定义 随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务.同时,它也是一种数据降维手段,在处理缺失值.异常值以及其他数据探 ...
- Python随机森林预测含水率
Python随机森林预测含水率 import pandas as pd import numpy as np import matplotlib.pyplot as plt from sklearn. ...
- Python应用实战案例-深入浅出Python随机森林预测实战(附源码)
前言 组合算法也叫集成学习,在金融行业或非图像识别领域,效果有时甚至比深度学习还要好.能够理解基本原理并将代码用于实际的业务案例是本文的目标,本文将详细介绍如何利用Python实现集成学习中随机森林这 ...
- 【华为云技术分享】【Python算法】分类与预测——Python随机森林
1.随机森林定义 随机森林是一种多功能的机器学习算法,能够执行回归和分类的任务.同时,它也是一种数据降维手段,在处理缺失值.异常值以及其他数据探索等方面,取得了不错的成效.另外,它还担任了集成学习中的 ...
- python随机森林库_随机森林库:R和Python中的不同结果
下面的代码用R和python训练一个随机森林模型.正如您所注意到的,R(1-0.27=0.73)中的精度要比Python中的(0.69)好.此外,特性在R和Python中的重要性是不同的.在 [EDI ...
- python随机森林库_随机森林算法入门(python)
目录 1 什么是随机森林 1.1 集成学习 1.2 随机决策树 1.3 随机森林 1.4 投票 2 为什么要用它 3 使用方法 3.1 变量选择 3.2 分类 3.3 回归 4 一个简单的Python ...
- python随机森林变量重要性_python机器学习之随机森林(七)
机器学习之随机森林,供大家参考,具体内容如下 1.Bootstraping(自助法) 名字来自成语"pull up by your own bootstraps",意思是依靠你自己 ...
最新文章
- 微软:外接 USB 设备或 SD 卡时将无法更新 Windows 1903
- Four-tuples (2018山东省省赛 容斥定理)
- 学生上课睡觉班主任怎么处理_班主任案例:学生上课睡觉应对策略
- 机器学习从零开始-Kaggle数据用PurePython实战
- codeforces#239_div2_B Garland 简单模拟
- Linux Tomcat日志查看实用命令
- 2. with check option能起什么作用?_【科普】专家教路:面膜护肤到底有什么用?
- web Server支持 perl
- 终于下定决心以后要定期清理清理一下园子啦
- 数据结构+算法+c++学习(写在前面)
- canoe开发从入门到精通_后端java开发工程师学习路线
- oracle 11g 监听bug,oracle 11g数据库使用XML Table的BUG解决
- FusionCharts Free(2)
- 安谋中国“星辰”处理器商用:灵动微、全志科技、华大北斗布局合作
- 技术停滞:如何更新?
- 数据库系统的结构和组成
- mysql感觉表头对不齐_表头固定为什么对不齐?
- Jupyter Notebook中使用conda配置的Python虚拟环境
- ddns与内网穿透软件
- 【附源码】计算机毕业设计java在线学习系统的设计与开发设计与实现
热门文章
- iPhone的全新创意 变身成收音机
- CTF小白新手导航(基础建议)
- 网站搜索引擎优化指南
- 键盘按键VK键值列表及宏定义
- 艾美捷焦磷酸(PPi)分析试剂盒,高通量筛选神器
- linux 限速工具 netem bridge
- 历史进程中的中国品牌
- Chapter 3 (Determinants): Cramer‘s rule, volume, and linear transformations (克拉默法则、体积和线性变换)
- unity ios 下载图片并将图片保存至相册
- SOCKET与 线程 完成聊天室 非阻塞