极简sklearn-使用决策树预测泰坦尼克号幸存者

这篇具有很好参考价值的文章主要介绍了极简sklearn-使用决策树预测泰坦尼克号幸存者。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

泰坦尼克号幸存者数据集是kaggle竞赛中入门级的数据集,今天我们就来用决策树来预测下哪些人会成为幸存者。

数据集下载地址: https://download.csdn.net/download/ting4937/87630361

 数据集中包含两个csv文件,data为训练用数据,test为测试集。

探索数据

首先我们通过pandas来读取并查看数据

import pandas as pd
data = pd.read_csv(r"data.csv") #读取数据

data.head() #显示头5条数据

数据如下:里面包含了特征和标签

极简sklearn-使用决策树预测泰坦尼克号幸存者

特征 描述
survival 该乘客是否获救,1是获救
pclass 乘客船票等级,1/2/3等舱位,一等票/二等票/三等票
sex 乘客性别
Age 乘客年龄,以年为单位
sibsp 乘客,在泰坦尼克号上的堂兄妹/配偶的个数
parch 乘客,在泰坦尼克号上的父母/孩子个数
ticket 乘客船票信息
fare 乘客船票价格
cabin 乘客船舱信息
embarked

乘客登船港口
S = Southampton,

C = Cherbourg,
Q = Queenstown

再通过info方法来查看数据有多少条,空值情况

data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB

处理数据

通过分析数据可以看出name和ticket与是否存活没多少关系,而cabin缺失值太多,这三列需要删掉

#删除指定列, inplace=True表示覆盖原数据,axis=0表示删除行,1表示删除列
data.drop(["Cabin","Name","Ticket", "PassengerId"],inplace=True,axis=1)

age有一百多条数据是空的,需要填上缺失值,我们使用均值来填充,Embarked缺失值不多,直接删掉缺失值

#处理缺失值,填上均值
data["Age"] = data["Age"].fillna(data["Age"].mean())
#删除缺失值
data = data.dropna()

由于决策树只能处理数值型数据,所以需要把性别转成0和1

#将二分类变量转换为数值型变量
data["Sex"] = (data["Sex"]== "male").astype("int")

embarked是三分类的,需要先拿到所有分类,再通过分类的index方法获取索引转成数字

#将三分类变量转换为数值型变量
labels = data["Embarked"].unique().tolist()
data["Embarked"] = data["Embarked"].apply(lambda x: labels.index(x))

数据处理完毕,我们要提取特征和标签,pandas的iloc可以通过索引来分割行列,比如data.iloc[0:5,0:2]表示取5行数据,包含前两列,要取出所有特征可以这么写data.iloc[:,data.columns != "Survived"],data.columns != "Survived"返回一个list当列不等于Survived返回True,这样iloc就会返回True的列,这样就能取出特征了

#取出所有不是Survived的列,即特征
X = data.iloc[:,data.columns != "Survived"]
#取出是Survived的列
y = data.iloc[:,data.columns == "Survived"]

我们来看下数据处理的最终结果,最终留下7个特征,889条数据,全是数值型的

 0   Pclass    889 non-null    int64  
 1   Sex       889 non-null    int32  
 2   Age       889 non-null    float64
 3   SibSp     889 non-null    int64  
 4   Parch     889 non-null    int64  
 5   Fare      889 non-null    float64
 6   Embarked  889 non-null    int64  

训练模型

接下去分隔测试集和训练集来进行模型的训练,由于分隔方法是随机挑选,会把DataFrame的索引打乱,所以需要修正下索引

#分隔测试集,训练集
Xtrain, Xtest, Ytrain, Ytest = train_test_split(X,y,test_size=0.3)
#修正测试集和训练集的索引
for i in [Xtrain, Xtest, Ytrain, Ytest]:
    i.index = range(i.shape[0])

训练模型,测试模型

clf = DecisionTreeClassifier(random_state=25)
clf = clf.fit(Xtrain, Ytrain)
score_ = clf.score(Xtest, Ytest)

得分

0.7378277153558053

网格搜索调参

import numpy as np

parameters = {'splitter':('best','random')
              ,'criterion':("gini","entropy")
              ,"max_depth":[*range(1,10)]
              ,'min_samples_leaf':[*range(1,50,5)]
              ,'min_impurity_decrease':[*np.linspace(0,0.5,20)]
             }

clf = DecisionTreeClassifier(random_state=25)
GS = GridSearchCV(clf, parameters, cv=10)
GS.fit(X,y)

查看网格搜索推荐参数

GS.best_params_
{'criterion': 'gini',
 'max_depth': 6,
 'min_impurity_decrease': 0.0,
 'min_samples_leaf': 6,
 'splitter': 'best'}

根据推荐参数来训练模型文章来源地址https://www.toymoban.com/news/detail-440204.html

clf = DecisionTreeClassifier(random_state=25
                            ,criterion = "gini"
                            ,max_depth = 9
                            ,min_impurity_decrease = 0
                            ,min_samples_leaf = 6
                            ,splitter = "best")
clf = clf.fit(Xtrain, Ytrain)
score_ = clf.score(Xtest, Ytest)
score_
0.7640449438202247

到了这里,关于极简sklearn-使用决策树预测泰坦尼克号幸存者的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 泰坦尼克号乘客生存情况预测分析2

    泰坦尼克号乘客生存情况预测分析1 泰坦尼克号乘客生存情况预测分析2 泰坦尼克号乘客生存情况预测分析3 泰坦尼克号乘客生存情况预测分析总 Titanic数据集在数据分析领域是十分经典的数据集,非常适合刚入门的小伙伴进行学习! 泰坦尼克号轮船的沉没是历史上最为人熟知

    2024年04月27日
    浏览(34)
  • 【机器学习kaggle赛事】泰坦尼克号生存预测

    目录 写在前面  数据集情况查看 数据清洗 Embarked: Fare Age Cabin  特征工程 1,探究Sex与Survived的相关性  2,探究Pcalss与Survived的关联性  3,Embarked:不同的上船地点对生存率是否有影响  ​4,Name与Survived的相关性  5,Cabin与Survived之间的相关性 6,探究孤身一人和有家人陪伴的

    2023年04月23日
    浏览(48)
  • 深度学习项目:泰坦尼克号生存预测【附完整源码】

    数据处理 建立模型 训练模型 评估模型 模型预测 保存模型 数据文件: 2.1 泰塔尼克号数据 数据描述: RMS 泰坦尼克号的沉没是历史上最为人熟知的海难事件之一。 1912 年 4 月 15 日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在船上的 2224 名乘客和机组人员中,共造

    2024年02月09日
    浏览(47)
  • Kaggle实战入门:泰坦尼克号生还预测(进阶版)

    Kaggle实战入门:泰坦尼克号生还预测(基础版)对机器学习的全流程进行了总体介绍。本文继续以泰坦尼克号生还预测为例,对机器学习中的特征工程、模型构建进行深入解读。 数据集及代码下载 由于针对训练数据集、测试数据集均要做空值填充、编码转换、离散化、归一

    2024年02月02日
    浏览(39)
  • 机器学习实战(入门级) ------ Kaggle 泰坦尼克号幸存者预测 (随机森林,KNN,SVM)

    本篇将注重于机器学习预测模型的过程、数据分析以及项目实战落地。对于各种所使用的算法直接调用sklearn包,在这里不会说算法的原理和过程。有想看原理和过程的可以看我这两天整理的学习笔记。 KNN K邻近 学习笔记 各种聚类 学习笔记 决策树与随机森林 学习笔记 SVM 支

    2024年02月03日
    浏览(51)
  • 泰坦尼克号可视化数据分析报告

    上一节已经用用逻辑回归算法预测泰坦尼克号人员存活情况,但是不了解什么样的人容易存活;因此,用数据分析方法继续探究数据背后隐藏的秘密,并用数据可视化方法展示出来。 目录 提出问题 理解数据 采集数据 导入数据 查看数据 数据清洗 数据处理 幸存率与家庭类别

    2024年02月11日
    浏览(52)
  • 基于用Hive泰坦尼克号乘客信息存储与分析

    实现以下任务: 创建数据库taitan 创建乘客信息表 导入数据到表中 统计获救与死亡情况 统计舱位分布情况 统计港口登船人数分布情况 统计性别与生存率的关系 统计客舱等级与生存率的关系 统计登船港口与生存率的关系 1.创建一个内/外部表,指定数据的存放路径。 (1)创建

    2024年02月06日
    浏览(49)
  • 深度学习之构建MPL神经网络——泰坦尼克号乘客的生存分析

          大家好,我是带我去滑雪!       本期使用泰坦尼克号数据集,该数据集的响应变量为乘客是生存还是死亡(survived,其中1表示生存,0表示死亡),特征变量有乘客舱位等级(pclass)、乘客姓名(name)、乘客性别(sex,其中male为男性,female为女性)、乘客年龄(ag

    2024年02月05日
    浏览(42)
  • 泰坦尼克沉船存活率(机器学习,Python)

    目录 1,实验要求: 2,报告内容 引言 数据处理 导入数据 查看数据集信息 数据清洗  特征工程 特征提取 特征选择 生还率预测说明 模型构建 建立训练数据集和测试数据集  选择不同的机器学习算法 训练模型,评估模型  方案实施 生存预测 参数调优 结论 改进方法 详细描

    2024年02月03日
    浏览(32)
  • Titanic 泰坦尼克数据集 特征工程 机器学习建模

    以下内容为讲课时使用到的泰坦尼克数据集分析、建模过程,整体比较完整,分享出来,希望能帮助大家。部分内容由于版本问题,可能无法顺利运行。 1   经典又有趣的 Titanic问题 1.1   目标 1.2   解决方法 1.3   项目目的 2   导入模块 3   加载数据 4   探索性数据分析

    2024年02月04日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包