当前位置: 首页 >  技术分享 >  用决策树或随机森林解决泰坦尼克号乘客生存预测(内附数据集百度网盘)

用决策树或随机森林解决泰坦尼克号乘客生存预测(内附数据集百度网盘)

导读:实现该模型的训练要用到的主要算法和实现思路是.""".项目:泰坦尼克号乘客生存预测.主要算法:决策树\随机森林.实现思路:.1、导包.2、读取数据.3、对数据进行基本处理.4、特征工程.5、决策树预估器流程.6、模型评估.""".首先的首先当然是导包啦.# 1、导包.import

实现该模型的训练要用到的主要算法和实现思路是

"""
项目:泰坦尼克号乘客生存预测

主要算法:决策树\随机森林

实现思路:
    1、导包
    2、读取数据
    3、对数据进行基本处理
    4、特征工程
    5、决策树预估器流程
    6、模型评估
"""

首先的首先当然是导包啦

# 1、导包  



import pandas as pd # 读取文件用的
from sklearn.feature_extraction import DictVectorizer # 用来进行字典特征抽取
from sklearn.tree import DecisionTreeClassifier #决策树
from sklearn.model_selection import GridSearchCV # 网格搜索和CV(交叉验证)
from sklearn.ensemble import RandomForestClassifier # 随机森林

然后就是读取文件里面的数据进来了

# 2、读取数据  



train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
y_test = pd.read_csv('gender_submission.csv')

数据集下载:百度网盘

链接:https://pan.baidu.com/s/1slaouE4Es37U8u0U-kDJnw
提取码:ss5o

接着是进行对数据进行基本的处理了,以下是作者的处理方法:

第一步是把多余的特征去除,选取出有用的特征,作者认为,在数据集里面有用的有”Pclass”,“Age”,“Sex”三个,所以我对它进行提取出来

# 3、对数据进行基本处理  



# 1)选取有用的数据
x_train = train[["Pclass","Age","Sex"]]
y_train = train["Survived"]
x_test = test[["Pclass","Age","Sex"]]

第二步是把缺失值给填充为平均值。对于缺失值有两种处理方式,一是如果该特征不重要,直接删除便是,二是填充平均值或众数

# 2)缺失值处理:用平均值填充
x_train["Age"].fillna(x_train["Age"].mean(),inplace=True)
x_test["Age"].fillna(x_train["Age"].mean(),inplace=True)

# .fillna()是用来把括号里的值填充进空值里,里面的inplace是决定是否要在自身进行修改
# .mean()是取到其平均值

第三步是把数据转化成字典类型

# 3)转换成字典
x_train = x_train.to_dict(orient="records")
x_test = x_test.to_dict(orient="records")

“““  
orient 控制的是转换成的字典的形式
orient =‘dict’,是函数默认的,转化后的字典形式:{column(列名) : {index(行名) : value(值) )}};
orient =‘list’ ,转化后的字典形式:{column(列名) :{[ values ](值)}};
orient =‘series’ ,转化后的字典形式:{column(列名) : Series (values) (值)};
orient =‘split’ ,转化后的字典形式:{‘index’ : [index],‘columns’ :[columns],’data‘ : [values]};
orient =‘records’ ,转化后是 list形式:[{column(列名) : value(值)}…{column:value}];
orient =‘index’ ,转化后的字典形式:{index(值) : {column(列名) : value(值)}};

”””

下一步是进行特征工程,把数据处理成计算机能看懂的鸭子

# 4、特征工程  


# 1)实例化两个转换器
transfer = DictVectorizer()  

# 2)使用转换器  

x_train = transfer.fit_transform(x_train)
x_test = transfer.transform(x_test)

“““
注:以上x_test是用transform方法,是应为fit_transform方法实际上可以分为两个方法,
  一个是fit,一个是transform,fit是用来计算数据的标准差和平均数,transform是用来
  转化数据的,在第一次使用fit_transform时,transfer里面已经通过fit得到了x_train
  的标准差和平均值了,为了数据标准化更加真实,所以x_test也要用一样的标准差和平均值,
  这就是x_test使用transform的原因
”””

最后就是使用决策树算法了

# 5、决策树预估器流程


# 实例化预估器
es = DecisionTreeClassifier(criterion="entropy")

# 添加网格搜索和CV
es = GridSearchCV(es,param_grid={"max_depth":[1,2,3,4,5,6,7,8,9]},cv=3)


# 6、模型评估



# 使用预估器
es.fit(x_train, y_train)


# 查看准确率
print(es.score(x_test, y_test["Survived"]))

# 查看最佳数据
print("最佳深度:",es.best_params_)
print("最佳成绩:",es.best_score)

另外一个就是也可以用随机森林的算法

# 5、随机森林预估器流程


# 使用随机森林进行解决
est = RandomForestClassifier()

# 添加网格搜索和CV
est = GridSearchCV(est,param_grid={"n_estimators":[10,20,40,80,160,320,640,1280]},cv=3)

# 使用
est.fit(x_train, y_train)


# 6、模型评估




# 查看准确率
print(est.score(x_test, y_test["Survived"]))

# 查看最好参数
print("最好的树数量:",est.best_params_)
print("最佳成绩:",est.best_score_)

如此下来,我们便完成了一个关于泰坦尼克号乘客生存预测的模型辣!

(ps:该随笔是作者一边学习一边写的,里面有一些自己的拙见,如果有错误或者哪里可以改正的话,还请大家指出并批评改正!)

内容
  • 【Oculus Interaction SDK】(一)设置 VR 相机与控制器 & 实现简单的抓取功能
    【Oculus Interact
    2023-12-10
    前言.前段时间 Oculus 的 SDK.频繁更新,很多已有的教程都不再适用于现在的版本了。本系列文章的主要目的是记录现
  • 刀光拖尾功能的改良
    刀光拖尾功能的改良
    2023-12-09
    年末终于有空,刀光拖尾是我很早就想回顾的一个课题,项目中多采用插件实现,很少有机会去研究。.之前也写过一版拖尾,但效果并
  • Unity绘制圆和缓动雷达图
    Unity绘制圆和缓动雷达图
    2023-12-08
    Unity绘制圆和缓动雷达图.之前在做UI模块的时候遇到过需要做雷达图的效果,所以简单复习了一下.关于网格绘制.我们都知
  • UE5 材质 运动的扭曲效果
    UE5 材质 运动的扭曲效果
    2023-12-06
    前言.本篇使用UE5的材质系统实现运动的扭曲效果,并解决他的重复性.纹理变换.总结思路.为uv坐标添加time节点.实现
  • 暗黑破坏神词缀实现思路2.0
    暗黑破坏神词缀实现思路2.0
    2023-12-05
    代码示例.Github地址:暗黑破坏神词缀实现思路-示例代码.序言.暗黑类游戏非常经典,之前玩过很多,也尝试过写过实现的
  • 《领域驱动设计》:从领域视角深入仓储(Repository)的设计和实现
    《领域驱动设计》:从领域视角深入
    2023-12-04
    一、前言 “.DDD设计的目标是关注领域模型而并非技术来创建更好的软件,假设开发人员构建了一个SQL,并将它传递给基础设
  • OnionArch - 采用DDD+CQRS+.Net 7.0实现的洋葱架构
    OnionArch - 采用DD
    2023-12-04
    博主最近失业在家,找工作之余,看了一些关于洋葱(整洁)架构的资料和项目,有感而发,自己动手写了个洋葱架构解决方案,起名叫
  • JVM调优篇:探索Java性能优化的必备种子面试题
    JVM调优篇:探索Java性能优
    2023-12-04
    JVM内存模型.首先面试官会询问你在进行JVM调优之前,是否了解JVM内存模型的基础知识。这是一个重要的入门问题。JVM
  • 实现草地Shader的物体互动效果
    实现草地Shader的物体互动效
    2023-12-02
    我跟着教程:https://zhuanlan.zhihu.com/p/433385999 用Unity Shader实现
  • 游戏中模型动画的几种实现方式
    游戏中模型动画的几种实现方式
    2023-12-02
    游戏内动画的实现方式一般有这几种:.骨骼动画.顶点动画.材质动画.CPU蒙皮动画.骨骼动画.骨骼动画是一种基于骨骼系统的
  • 驱动开发:内核LoadLibrary实现DLL注入
    驱动开发:内核LoadLibra
    2023-12-02
    远程线程注入是最常用的一种注入技术,在应用层注入是通过CreateRemoteThread这个函数实现的,该函数通过创建
  • 可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤
    可爱儿童内衣套装,优质棉质,柔软
    2024-01-05
    可爱儿童内衣套装,优质棉质,柔软透气,呵护宝宝肌肤.宝宝的皮肤是非常娇嫩的,所以选择合适的内衣套装对于宝宝的健康和舒适至
  • 时尚潮流运动鞋
    时尚潮流运动鞋
    2024-01-15
    时尚潮流运动鞋.时尚潮流运动鞋一直是年轻人喜爱的时尚单品,它不仅舒适耐穿,更是一种个性的象征。随着时尚潮流不断更新,运动
  • 修身弹力牛仔裤
    修身弹力牛仔裤
    2023-12-26
    修身弹力牛仔裤:展现你的魅力.一、时尚的必备单品.修身弹力牛仔裤一直都是时尚界的必备单品,它不仅可以展现出个人的魅力,还
  • 休闲简约短袖衬衫
    休闲简约短袖衬衫
    2023-12-21
    休闲简约短袖衬衫.现代人生活节奏快,休闲简约的穿着成为时尚潮流。短袖衬衫作为经典的休闲单品,一直备受时尚人士的青睐。它舒
  • 休闲宽松T恤衫,释放自在舒适气息
    休闲宽松T恤衫,释放自在舒适气息
    2023-12-26
    休闲宽松T恤衫,释放自在舒适气息.在这个喧嚣的都市中,人们的生活节奏变得越来越快,压力也越来越大。因此,人们更加注重舒适
  • 潮流风衣大衣,彰显都市时尚风采
    潮流风衣大衣,彰显都市时尚风采
    2023-12-16
    潮流风衣大衣,彰显都市时尚风采.潮流风衣大衣一直是时尚界备受追捧的单品之一。它既能为我们遮风挡雨,又能为我们穿出时尚感,
  • 时尚修身连衣裙,展现优雅女性魅力
    时尚修身连衣裙,展现优雅女性魅力
    2023-12-06
    时尚修身连衣裙,展现优雅女性魅力.时尚修身连衣裙一直是女性衣橱里的必备单品,不仅款式多样,而且能够展现出女性的优雅魅力。
  • 保暖舒适羊毛大衣
    保暖舒适羊毛大衣
    2024-01-05
    保暖舒适羊毛大衣.冬季来临,寒冷的天气让人们更加注重保暖。在这个时候,一件保暖舒适的羊毛大衣成为了许多人的首选。羊毛大衣
  • 萌娃配饰套装,包包、帽子、围巾等,增添宝宝的时尚气息
    萌娃配饰套装,包包、帽子、围巾等
    2024-01-20
    萌娃配饰套装,为宝宝增添时尚气息.宝宝是家庭的小太阳,****们都希望给他们最好的一切。随着时尚的发展,宝宝的时尚潮流也
  • 轻盈雪纺衬衫,打造清新淑女形象
    轻盈雪纺衬衫,打造清新淑女形象
    2023-12-31
    轻盈雪纺衬衫,打造清新淑女形象.雪纺材质的衬衫一直以来都是清新淑女形象的代表,它轻盈飘逸的质地,柔软透气的触感,让人仿佛