泰坦尼克号幸存者预测(案例)----决策树版

news2024/11/14 20:32:58

1、导入需要的库

import pandas as pd
from sklearn.tree import DecisionTreeClassifier
import matplotlib.pyplot as plt
from sklearn.model_selection import GridSearchCV

2、导入数据
在此下载泰坦尼克号训练数据

data = pd.read_csv(r"F:\data\train1.csv")
data

在这里插入图片描述
把不需要的特征删除。

#筛选特征
data.drop(['Cabin',"Name","Ticket"],inplace=True,axis=1) #删除列,inplace默认为false也就是是否覆盖原表

并且用data.info()去查看数据是否有缺失

data.info()
#下图age就很多缺失值

在这里插入图片描述
所以我们得填补缺失值。

#处理缺失值
data["Age"] = data["Age"].fillna(data["Age"].mean()) #用fillna均值填充na
data = data.dropna(axis=0) #删掉有缺失值的行(只有两行,对数据影响不大)

把object处理为数字,因为只能处理数字。

labels = data["Embarked"].unique().tolist() #查看有几个值
data["Embarked"] = data["Embarked"].apply(lambda x: labels.index(x)) #x的Embarked中每一条记录
data.loc[:,"Sex"] = (data["Sex"] == "male").astype("int") #astype转换类型

因为特征和标签都在一个表上,所以得把特征和标签分开。

x = data.loc[:,data.columns != "Survived"] #特征
y = data.loc[:,data.columns == "Survived"] #标签

把数据分为测试集和训练集

from sklearn.model_selection import train_test_split
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)

score
#0.7378

这就有下面使用交叉验证再取平均:

from sklearn.model_selection import cross_val_score 
#使用交叉验证
clf = DecisionTreeClassifier(random_state=25) #实例化
score = cross_val_score(clf,x,y,cv=10).mean()

score
#0.7469

下面就是调参:

#调参
tr = []
te = []
for i in range(10):
    clf = DecisionTreeClassifier(random_state=25
                                ,max_depth=i+1
                                )
    clf = clf.fit(Xtrain,Ytrain)
    score_tr = clf.score(Xtrain,Ytrain)
    score_te = cross_val_score(clf,x,y,cv=10).mean()
    #这里测试和训练的数据有所变化
    tr.append(score_tr)
    te.append(score_te)
print(max(te))
plt.plot(range(1,11),tr,color='red',label='train')
plt.plot(range(1,11),te,color='black',label='test')
plt.xticks(range(1,11))
plt.legend()
plt.show()
#由此可调出max_depth的参数。

在这里插入图片描述
这样只能一次调一个参数,所以有了下面的网格搜索。

import numpy as np

parameters = {"criterion":("gini","entropy")
             ,"splitter":("best","random")
             ,"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 = GS.fit(Xtrain,Ytrain)
#得跑好几分钟
GS.best_params_ #从我们输入的参数和参数取值的列表中,返回最佳组合
GS.best_score_ #网格搜索后模型的评判标准
#0.8279

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/505588.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

内网安全:Cobalt Strike 安装.

内网安全:Cobalt Strike 安装. Cobalt Strike是一款渗透测试神器(又称为CS)。拥有多种协议主机上线方式,集成了端口转发,socket代理,office攻击,文件捆绑,钓鱼,提权&…

哈希算法原理与应用:确保数据完整性和安全性的关键技术

哈希算法是一种将任意长度的消息映射为固定长度摘要或哈希值的算法。哈希算法主要被用于验证数据的完整性和安全性。哈希算法的应用广泛,例如在密码学中用于验证数据完整性和数字签名,也用于检索数据和进行散列分布式存储。下面将详细介绍哈希算法的原理…

《Linux 内核设计与实现》12. 内存管理

文章目录 页区获得页获得填充为 0 的页释放页 kmalloc()gfp_mask 标志kfree()vmalloc() slab 层slab 层的设计slab 分配器的接口 在栈上的静态分配单页内核栈 高端内存的映射永久映射临时映射 每个 CPU 的分配新的每个 CPU 接口 页 struct page 结构表示系统中的物理页&#x…

区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测

区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测 目录 区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测效果一览基本介绍模型描述程序设计参考资料 效果一览 基本介绍 区间预测 | MATLAB实现QRCNN卷积神经网络分位数回归时间序列区间预测…

超级详细的 FinalShell 安装 及使用教程

一、引言 FinalShell 是一款免费的国产的集 SSH 工具、服务器管理、远程桌面加速的良心软件,同时支持 Windows,macOS,Linux,它不单单是一个 SSH 工具,完整的说法应该叫一体化的的服务器,网络管理软件,在很大程度上可以…

新唐NUC980使用记录(5.10.y内核):在用户应用中使用GPIO

文章目录 目的使用参考与演示使用参考存在的问题问题定位修改设备树使用测试 总结设备树文件内容 目的 GPIO是最基础的外设,使用频率也非常高,这篇文章将简单体验在NUC980 Liunx用户应用中使用GPIO功能。 这篇文章中内容均在下面的开发板上进行测试&am…

【java EE】Redis基础

Redis基础 业务中会遇到的问题: 数据量巨大数据模式的不确定性数据的频繁读数据的频繁更改大量数据的统计分析 集中数据库的特点 Redis简介: Redis(Remote Dictionary Server)是一个使用ANSI C语言编写的开源数据库高性能的 …

解密Web自动化测试:你需要了解的四大难点

B站首推!2023最详细自动化测试合集,小白皆可掌握,让测试变得简单、快捷、可靠https://www.bilibili.com/video/BV1ua4y1V7Db 目录 前言 问题1:测试稳定性 问题2:测试可维护性 问题3:测试性能 问题4&am…

阿里熔断限流框架Sentinel实现流程和动态规则数据源

文章目录 1.简单介绍2.使用示例3.主要实现原理和组成部分4.动态规则数据源 本篇文章主要介绍熔断限流框架Sentinel的使用示例、组成原理和动态规则数据源的实现原理。 1.简单介绍 阿里的熔断限流框架Sentinel基于滑动时间窗口实现熔断限流管控的,支持多样的管控场景…

PHP 基础入门

目录 1、标记 2、注释 3、输出语句 4、关键字 5、常量的定义与使用 6、预定义常量 7、变量的赋值&#xff08;传参赋值与引用赋值&#xff09; 8、可变变量 9、双引号和单引号的区别 10、heredoc结构和nowdoc结构 11、其他符号 1、标记 <?php 和 ?> 是PHP标…

【MySQL】EXPLAIN 语句 各字段 详解

EXPLAIN 语句 概貌 在连接查询的执行计划中&#xff1a; 每个表都会对应一条记录&#xff0c;这些记录的 id 列的值是相同的&#xff1b; 在包含子查询的执行计划中 &#xff1a;每个 select关键字都会对应一个唯一的 id 值。 驱动表&#xff1a;出现在前面的表&#xff1b; …

Apache ECharts 一个基于 JavaScript 的开源可视化图表库

一&#xff1a; ECharts 特性 ECharts&#xff0c;一个使用 JavaScript 实现的开源可视化库&#xff0c;可以流畅的运行在 PC 和移动设备上&#xff0c;兼容当前绝大部分浏览器&#xff08;IE9/10/11&#xff0c;Chrome&#xff0c;Firefox&#xff0c;Safari等&#xff09;&a…

谷歌正在向所有账户推出密码终止技术

谷歌宣布让其个人帐户持有人使用称为“密码”的密码替代登录的一项重大努力。 该功能面向公司的数十亿帐户推出&#xff0c;用户将能够主动寻找并启用它。谷歌表示&#xff0c;它计划在未来几个月推广密码&#xff0c;并开始推动账户持有人将他们传统的用户名和密码登录转换为…

vscode 远程开发:免密登入设置

文章目录 1. vscode 安装2. vscode 插件安装&#xff08;1&#xff09; 中文界面设置&#xff08;2&#xff09; ssh远程插件安装 3. 免密登入 1. vscode 安装 vscode 官网下载地址&#xff1a;https://code.visualstudio.com/ 安装很简单&#xff1a; 可以默认方式&#xff0…

新建一台VMware虚拟机

文章目录 前言一、问题二、步骤1.确认已安装VMware Workstation&#xff0c;已下载Windows 10 光盘镜像2.新建虚拟机pc13.自定义虚拟机pc1的硬件 总结 前言 新建一台VMware虚拟机。 一、问题 本例要求在VMware Workstation软件中创建一台新虚拟机&#xff0c;相关说明如下。 …

Go语言字符串基础

目录 字符串基础 合并和分割字符串 分割 合并 判断是否包含 strings.Contains() 查找子串出现的位置 strings.Index() strings.LastIndex() 字符串基础 1.字符串是由一串Unicode字符组成的序列&#xff0c;每个Unicode字符都占用一个或多个字节的存储空间。 2.字符串…

【腾讯云 Finops Crane 集训营】老板喜欢降本增效?学会 Crane,让腾讯每月省千万的奇迹在你手中上演

❤️作者主页&#xff1a;小虚竹 ❤️作者简介&#xff1a;大家好,我是小虚竹。2022年度博客之星评选TOP 10&#x1f3c6;&#xff0c;Java领域优质创作者&#x1f3c6;&#xff0c;CSDN博客专家&#x1f3c6;&#xff0c;华为云享专家&#x1f3c6;&#xff0c;掘金年度人气作…

SpringBoot 简单多模块构建

前言 SpringBoot系列到现在虽然代码不多&#xff0c;但是感觉结构很乱&#xff0c;随着项目的复杂性提高&#xff0c;代码会越来越臃肿&#xff0c;耦合性高。 所以SpringBoot多模块很有必要&#xff0c;简单来说就是由以前按包分模块变为jar包分模块。在多模块jar模式下可以将…

【勝讯云 Finops Crane 集训营】之集群优化实战

重要通知 由腾讯云联合 CSDN 推出的“腾讯云 Finops Crane 开发者集训营”活动&#xff0c;主要面向广大开发者&#xff0c;旨在通过线上直播、组织动手实验、有奖征文&#xff0c;开源项目贡献者招募这一系列技术实践活动中既能通过活动对 Finops Crane 开源项目有一个深入的]…

mathtype不激活能用吗 mathtype产品密钥如何取得

在文档中输入数学式子时一般会用到mathtype&#xff0c;虽然mathtype为广大用户提供了一定期限的试用期&#xff0c;但试用期后如果没有成为正式用户&#xff0c;那么部分功能可能就用不了了。有些小伙伴可能会对mathtype不激活能用吗&#xff0c;mathtype产品密钥如何取得这两…