kaggle 泰坦尼克使用xgboost 得分0.73684

news2024/12/23 19:04:25

流程

  1. 导入所要使用的包
  2. 引入kaggle的数据集csv文件
  3. 查看数据集有无空值
  4. 填充这些空值
  5. 提取特征
  6. 分离训练集和测试集
  7. 调用模型

导入需要的包

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

引入kaggle的数据集csv文件

train=pd.read_csv('train.csv')
test=pd.read_csv('test.csv')
datas = pd.concat([train, test], ignore_index = True)

查看数据集有无空值

datas.info()

在这里插入图片描述
看到了有空值的属性列,Age,Fare,Cabin,Embarked
下面的操作就是给这些空值填充。

填充这些空值

首先填充少的Fare票价少了一行,先看一看这一行的信息

datas[datas['Fare'].isnull()]

在这里插入图片描述
已知信息,pclass等级是三类,说明比较贫穷
直接填一个较低的数字就行了
票价就给个差不多7.8好了,就一个数据缺失影响不大

datas['Fare']=datas['Fare'].fillna(7.8)

Embarked少了两行,先看一下这两行的信息

datas[datas['Embarked'].isnull()]

在这里插入图片描述
首先二人是女性,根据他们的女士优先的原则,存活概率比较高,pclass也是一级的,所以根据分配给他们三个港口存活率最高的C港口

datas['Embarked'] = datas['Embarked'].fillna('C')

还有Cabin船仓,缺失的很多,干脆把缺失的也归为一类,直接填充为U,然后每个取首字母,得到以字母为编号的船舱信息
空白填充为U

datas['Cabin']=datas['Cabin'].fillna("U")

每个取首字母

datas['Cabin']=datas['Cabin'].str.get(0)

还剩下一个数据是age年龄,缺失的也比较多,和存活率关系比较大,选用几个特征随机森林进行填充。

from sklearn.ensemble import RandomForestRegressor
ages = datas[['Age', 'Pclass','Sex']]
ages=pd.get_dummies(ages)
known_ages = ages[ages.Age.notnull()].values
unknown_ages = ages[ages.Age.isnull()].values
y = known_ages[:, 0]
X = known_ages[:, 1:]
rfr = RandomForestRegressor(random_state=60, n_estimators=100, n_jobs=-1)
rfr.fit(X, y)
pre_ages = rfr.predict(unknown_ages[:, 1::])
datas.loc[ (datas.Age.isnull()), 'Age' ] = pre_ages

通过以上的操作,已经没有缺失值。

提取特征

由于外国人名字的特点,对其进行归类,人为的做一些特征

datas['Title'] = datas['Name'].apply(lambda x:x.split(',')[1].split('.')[0].strip())
datas['Title'].replace(['Capt', 'Col', 'Major', 'Dr', 'Rev'],'Officer', inplace=True)
datas['Title'].replace(['Don', 'Sir', 'the Countess', 'Dona', 'Lady'], 'Royalty', inplace=True)
datas['Title'].replace(['Mme', 'Ms', 'Mrs'],'Mrs', inplace=True)
datas['Title'].replace(['Mlle', 'Miss'], 'Miss', inplace=True)
datas['Title'].replace(['Master','Jonkheer'],'Master', inplace=True)
datas['Title'].replace(['Mr'], 'Mr', inplace=True)

人多力量大,依据人性来看,有家庭成员的要比一个人的存活概率更高

datas['Fam_size'] = datas['SibSp'] + datas['Parch'] + 1

datas.loc[datas['Fam_size']>7,'Fam_type']=0
datas.loc[(datas['Fam_size']>=2)&(datas['Fam_size']<=4),'Fam_type']=2
datas.loc[(datas['Fam_size']>4)&(datas['Fam_size']<=7)|(datas['Fam_size']==1),'Fam_type']=1
datas['Fam_type']=datas['Fam_type'].astype(np.int32)


分离训练集和测试集

y=train['Survived']
features = ["Pclass", "Sex", "SibSp", "Parch","Title","Cabin","Fam_size","Embarked"]
# datas=datas.drop('Name',axis=1)
# datas=datas.drop('Age',axis=1)
# datas=datas.drop('Ticket',axis=1)
# datas=datas.drop('Fam_type',axis=1)
# datas=datas.drop('Fare',axis=1)
# qq=pd.get_dummies(datas)
train=datas[datas['Survived'].notnull()]
test=datas[datas['Survived'].isnull()].drop('Survived',axis=1)

X是训练集,取总数据的前这些行

X = pd.get_dummies(datas[features])
X=X.loc[0:890]

调用模型训练

# 模型初步训练 
from xgboost import XGBClassifier 
xg = XGBClassifier() 

xg.fit(X, y) 
xg.score(X, y)

划分测试集

X_test = pd.get_dummies(datas[features])
X_test = X_test.loc[891:1308]

输出文件

predictions = xg.predict(X_test)

output = pd.DataFrame({'PassengerId': test.PassengerId, 'Survived': predictions.astype(int)})
output.to_csv('mypredictxg.csv', index=False)

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

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

相关文章

人人都能玩赚数字人操作员 数字人直播搭建/多路开播/选品技巧/0-1开播流程

课程目录 01 数字人工业化直播车间打造 02 数字人直播规则及防封技巧 03 数字人直播间搭建步骤流程 04 数字人直播行业应用盘点 05 数字人直播多平台多路开播 06 数字人高成交循环话术运营 07 数字人直播选品及组品技I5 08 数字人直播0-1流程 09 工业化直播0-1流程 网…

Axure中的样式

样式 首先说一下Axure里面的原点位置 如下图&#xff1a; 还有一个办法是我们选中我们的按钮&#xff0c;如上图&#xff0c;然后打开右边的样式&#xff0c;可以看按钮的x&#xff0c;y属性&#xff0c;类似于游戏中unity软件的x&#xff0c;y属性&#xff0c;类似于html中…

【JVM系列】关于静态块、静态属性、构造块、构造方法的执行顺序

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

数字时代的智慧演奏

数字化时代&#xff0c;工业不再是孤独的机器运转&#xff0c;而是演绎着一场智能与数据的华丽交响。无数智能节点的联动&#xff0c;数据的涌动&#xff0c;成为工业的新活力&#xff0c;同时也是创新的源泉。 工业互联网将每个机器、设备连接在一起&#xff0c;打破了原本独立…

【数据结构练习题】堆——top-k问题

♥♥♥♥♥个人主页♥♥♥♥♥ ♥♥♥♥♥数据结构练习题总结专栏♥♥♥♥♥ ♥♥♥♥♥上一章&#xff1a;【数据结构练习题】二叉树(1)——1.相同的树2.另一颗树的子树3.翻转二叉树4.平衡二叉树5.对称二叉树♥♥♥♥♥ 文章目录 1.top-k问题1.1问题描述1.2思路分析1.3绘图分析…

simulink中怎么使用solve函数?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

Sulley入门教学——简介、安装(Win7、VMware)

1、简介 Sulley 是由 Pedram Amini 和 Aaron Portnoy 开发的开源工具。它以 Python 编写&#xff0c;可以轻松地在不同平台上部署和使用。Sulley 提供了一个灵活且功能强大的框架&#xff0c;允许用户定义协议消息的结构、字段类型、边界条件和模糊测试策略。用户可以使用 Sul…

第三方应用类---Phpmyadmin 后台 Getshell 操作

免责声明:本节仅做技术交流学习. 目录 什么是Phpmyadmin? getshell前提条件: 详细步骤: 1-搜集到开放phpmyadmin的web,然后访问进去 2-执行SQL命令查看是否开启了读写权限 3-开启了读写权限-->继续 没有开读写权限--->鸡鸡 4-有读写权限之后,执行SQL语句导出文件…

解析 IP(IPv4)地址

IPv 4 地址 一、组成二、IPv4 的分类三、子网掩码四、特殊的地址五、私有 IP 地址六、全局 IP 地址七、私有 IP 地址和全局 IP 地址的关系八、广播地址九、网络地址十、IP 地址个数计算十一、查看电脑的 IP 地址&#xff08;window&#xff09;十二、手动设置电脑的 IP 地址 为…

第二篇:阿里为什么要禁用Java内置线程池?自定义线程池参数如何设置?

线程池基本概念不清楚的请移步&#xff1a;第一篇&#xff1a;Java中的线程池介绍&#xff08;阿里为什么要禁用Java内置线程池&#xff1f;自定义线程池参数如何设置&#xff1f;&#xff09;-CSDN博客 Java中为我们提供了内置线程池&#xff0c;为什么阿里却要严令禁止使用呢…

Python 数据结构和算法实用指南(一)

原文&#xff1a;zh.annas-archive.org/md5/66ae3d5970b9b38c5ad770b42fec806d 译者&#xff1a;飞龙 协议&#xff1a;CC BY-NC-SA 4.0 前言 数据结构和算法是信息技术和计算机科学工程学习中最重要的核心学科之一。本书旨在提供数据结构和算法的深入知识&#xff0c;以及编程…

kkFileView 任意文件上传致远程代码执行漏洞复现(QVD-2024-14703)

0x01 产品简介 kkFileView 是使用 spring boot 搭建的文件文档在线预览解决方案,支持主流办公文档的在线预览。 0x02 漏洞概述 2024年4月,互联网上披露kkFileView远程代码执行漏洞情报,攻击者可利用该漏洞上传恶意文件,获取操作系统权限。该漏洞利用简单,建议受影响的客…

【Linux开发 第六篇】Linux常用命令知识

常用命令知识 关机和重启用户管理用户组运行级别帮助指令文件目录类时间日期类搜索查找类压缩和解压类 关机和重启 shutdown -h now //立刻进行关机 shutdown -h 1 “1分钟后进行” //一分钟后进行关机 并向登录Linux的各个用户发送字符串 shutdown -r now //现在重新启动…

网络安全产品---态势感知EDR

态势感知 what SA&#xff0c;Situational Awareness 是对一定时间和空间内的环境元素进行感知&#xff0c;并对这些元素的含义进行理解&#xff0c;最终预测这些元素在未来的发展状态。 why 安全防护思想已经从过去的被动防御向主动防护和智能防护转变。如果不做到主动防御…

git工具简单使用

文章目录 git上传克隆README.gitignore常用指令冲突 git 进行版本控制的版本控制器。安装git yum install -y git 配置git git config --global user.email "youexample.com" 告诉git你的邮箱是什么&#xff1f;最好输入你的gitee的注册邮箱git config --global …

哈尔滨等保测评综述

​ 定级是网络安全等级保护的首要环节和关键环节&#xff0c;可以梳理各行业、各部门、各单位的等级保护对象类型、重要程度和数量等基本信息&#xff0c;确定分级保护的重点。定级不准&#xff0c;系统备案、建设、整改、等级测评等后续工作都会失去意义&#xff0c;等级…

无人机--行业生命周期分析

行业生命周期:无人机行业生命周期还相对较短&#xff0c;但已经经历了多个阶段的发展。从最初的军用无人机&#xff0c;到近年来民用无人机和商业无人机的快速发展&#xff0c;无人机行业正逐渐走向成熟阶段。未来随着技术的不断进步和应用领域的不断拓展&#xff0c;无人机行业…

浅析ARM Contex-CM3内核架构

目录 概述 1. Cortex-M3类型MCU 1.1 MCU 架构 1.2 实时性系统概念 1.3 处理器命名法 1.4 MCU的一些知识 2. Cortex-M3 概览 2.1 Cortex-M3综述 2.2 寄存器组 2.3 操作模式和特权极别 2.4 内建的嵌套向量中断控制器 2.5 存储器映射 2.6 总线接口 2.7 存储器保护单元…

9.列表渲染

列表渲染 我们可以使用 v-for 指令基于一个数组来渲染一个列表。v-for 指令的值需要使用 item in items 形式的特殊语法&#xff0c;其中 items 是源数据的数组&#xff0c;而 item 是迭代项的别名 <template><div><p v-for"item in names">{{ it…

Adobe Acrobat PDF 2024

Adobe Acrobat PDF 2024正式发布&#xff01;支持Windows和macOS系统&#xff0c;新界面做了轻微调整。 下载地址 Windows客户端&#xff1a;https://www.123pan.com/s/f43eVv-GKZKd.html macOS客户端&#xff1a;https://www.123pan.com/s/f43eVv-PKZKd.html