机器学习之随机森林算法在泰坦尼克号数据中分类实践(实验)

举报
菜鸟级攻城狮 发表于 2021/06/19 11:22:19 2021/06/19
【摘要】 机器学习之随机森林算法在泰坦尼克号数据中分类实践(实验)

随机森林算法在泰坦尼克号数据中分类实践

1.实验目的

1)强化对分类问题的理解

2)学习分类算法的建模方法

2.实验要求

1)数据样本的写入及对应数据信息的探索

2)数据预处理(比如:填补缺失值)

3)分类算法建模:(实验步骤中至少包含以下两个部分,可更丰富详细)

  • 与决策树算法进行交叉验证对比分析(画出准确率对比折线图,并进行描述性语言分析)

通过画学习曲线确定随机森林中n-esmator的最佳值

3.实验环境

基于windows平台完成,Python管理环境采用Anaconda。

4.实验方法和步骤(含设计)

1、获取数据并查看数据结构,导入相关的库,并利用read.csv从本地读取csv格式数据集

查看数据数据集的具体信息

从图中可以看出整个数据集有891个标本,11列,其中第0列是标签,第1-10列是特征,共计10个特征。其中特征列Age。Canbin,Embarked的空值不是889个,说明这三列存在缺失值。特征列Name,Sex,Cabin,Embarked的数据类型为object,不能直接作为特征是数据带入模型进行处理,需要进行特征编码。

 

2、数据的预处理

1、通过理解业务特征之间的关系,先删除跟标签完全无关的列

此时,数据集的特征列为7个,还有特征列Age, Embarked存在缺失值,特征列Sex, Embarked数据类型需要进行转换。

 

2.由于Age特征很重要,缺少的20%左右,可采用均值进行填补;特征Embarked只缺少2个缺失值,缺失值个数较少,可直接删除。

 

此时,整个数据集样本数从891个减少为889个,不存在缺失值,可进行下一步数据转换。

 

3.将分类变量转换为数值型变量, astype能够将一个 pandas对象转换为某种类型,和pplylint()不同,astype可以将文本类转换为数字,用这个方式可以很便捷地将二分类特征转换为0~1

 

3、 划分数据集

1.按列名提取标签和特征矩阵,分别将特征矩阵命名为x,标签命名为y

2.按3: 7的比例将数据集划分为训练集和测试集,划分完成之后的训练集有622个样本

3.从上图可看出划分好之后的数据索引并没有按顺序排列,因此对数据索引进行修正

622 rows x 1 columns

修正好之后的数据索引则是按顺序从0-621,共622个训练样本。

 

4、建立初始模型:分别建立决策树和随机森林的两个初始模型,将模型的准确率分别命名为:Score_c0,Score_r0

初始状态下,随机森林算法的准确率比决策树高一点点。

 

5、分别对决策树算法,随机森林算法模型进行调参

1.调整决策树算法的max_depth 参数,画出对应学习曲线


考虑模型的复杂度和模型效果,从图中可以看到,当max_depth=3时,模型的准确率最高。

 

2.调整随机森林算法的n_ estimators 参数,画出对应学习曲线


在确定好的范围内,进一步细化学习曲线

通过学习曲线调参方法,随机森林 n_estimators=144 时,准确率最高


5.实验结果

通过以上模型调参结果,总结出模型的最佳参数如下,通过交叉验证得出模型最终的结果:

从实验结构可知,随机森林算法模型准确率最高

 

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。