kaggle 泰坦尼克使用xgboost 得分0.73684

流程

  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)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Hive基础5

一、窗口函数 聚合&#xff0c;取值函数 排序函数 over(partition by 分组字段 order by 字段 row between 起始行 and 结束行) /*创建部门表*/ CREATE TABLE dept (deptno INT PRIMARY KEY,dname VARCHAR(50) comment 部门名称,loc VARCHAR(50) comment 工作地点 ); ​ /*…

2024团体程序设计天梯赛L1-101 别再来这么多猫娘了!

题目链接L1-101 别再来这么多猫娘了&#xff01; #include<iostream> #include<stdio.h> #include<string.h> #include<string> #include<algorithm> using namespace std; string s[105], text; int n, k, ans, a[5005];int main() { // ios::s…

【项目】基于JDBC+MySQL的Java教务管理系统(附源码+论文说明)

摘要 随着信息技术的不断发展&#xff0c;教育管理也在向数字化、智能化方向迈进。Java作为一种广泛应用于企业级应用开发的编程语言&#xff0c;与数据库技术的结合更是为教务管理系统的开发提供了强大的支持。 本文将介绍基于JDBC&#xff08;Java Database Connectivity&a…

短视频不够500有效粉丝怎么涨?如何涨有效粉丝?巨量千川投流怎么涨粉的?

近期&#xff0c;一些使用抖音橱窗功能的用户遇到了一个问题&#xff0c;他们在挂橱窗时会出现“有效粉丝不足500”无法正常挂橱窗的提示。这个问题是由于抖音平台改变了规则所致。现在&#xff0c;只有通过观看视频而非刷关注的粉丝才被算作有效粉丝&#xff0c;其他的粉丝都将…

39. UE5 RPG角色释放技能时转向目标方向

在上一篇&#xff0c;我们实现了火球术可以向目标方向发射&#xff0c;并且还可以按住Shift选择方向进行攻击。技能的问题解决&#xff0c;现在人物释放技能时&#xff0c;无法朝向目标方向&#xff0c;接下来我们解决人物的问题。 实现思路&#xff1a; 我们将使用一个官方的…

(CVPR,2023)SAN:用于开放词汇语义分割的边缘适配网络

文章目录 相关论文相关资料摘要引言方法对视觉 token 的特征融合使用注意力偏差进行掩码识别分割图像生成 实验 相关论文 &#xff08;CVPR&#xff0c;2024&#xff09;SED&#xff1a;一个用于开放词汇语义分割的简单编解码器 &#xff08;CVPR&#xff0c;2024&#xff09;…

python int占几个字节

《深入理解计算机系统》这本书上面提到了在32位机器和64机器中int类型都占用4个字节。《The C Programming language》这本书&#xff0c;里面有一句话是这样的&#xff1a;Each compiler is free to choose appropriate sizes for its own hardware, subject only to the rest…

https协议的加密方式详解

各位大佬能多多点赞关注评论收藏&#xff0c;球球各位大佬们了&#xff01;&#xff01; &#xff01; 目录 1.为什么要加密&#xff1f; 2.如何加密 1.密钥&#xff08;yue,第四声&#xff09; 2.对称加密 3.非对称加密 4.公证机构 3.总结 1.为什么要加密&#xff1f;…

systemverilog中位的选择

常用的变量类型就是 reg 和 wire &#xff0c;这两种类型可以定义 一位的变量&#xff0c;也可以定义多位&#xff0c;其中 1 bit 的变量称为 标量(scalar)&#xff0c;多 bit 的变量称为 向量(vector)&#xff0c;如下所示&#xff1a; wire o_nor; // singl…

【树莓派】如何刷个系统给树莓派4B,如何ssh登陆到树莓派

文章目录 下载树莓派镜像下载烧写软件烧写编辑设置连接树莓派4B重启ssh查看树莓派IPssh远程连接问询、帮助 下载树莓派镜像 https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit 下载烧写软件 https://www.raspberrypi.com/software/ 烧写 编辑…

7. Spring Boot 创建与使用

经过前面的六篇文章&#xff0c;Spring Framework的知识终于大致讲完了&#xff0c;但是Spring AOP还没提到&#xff0c;个人认为Spring AOP更适合放在Spring MVC之后再讲解&#xff0c;而讲解Spring MVC前先学习Spring Boot的目的也是为了在学习Spring MVC的时候直接使用Sprin…

EelasticSearch使用

1. Easy-ES介绍 Easy-Es 2. 导入依赖包 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions>//排除框架中原有的依赖包<exclusion><groupId>org.elast…

Vue3 + Js + Element-Plus + VueX后台管理系统通用解决方案

前言 本文是作为学习总结而写的一篇文章&#xff0c;也是方便以后有相关需求&#xff0c;可以直接拿来用&#xff0c;也算是记录吧&#xff0c;文中有一些文件的引入&#xff0c;没给出来&#xff0c;完整项目地址&#xff08;后续代码仓库放这里&#xff09; 1、layout解决方…

kaggle 纽约预测出租车价格 得分 5.34072

流程 导入所要使用的包引入kaggle的数据集csv文件查看数据集有无空值填充这些空值提取特征分离训练集和测试集调用模型 数据资源获取 数据资源获取 导入需要的包 import numpy as np import pandas as pd import matplotlib.pyplot as plt import seaborn as sns引入kaggl…

基于CH32V103的多功能推杆设计

一、项目简介 “创意源于生活&#xff0c;工具始于懒惰。” 整体造型外观参考了最近比较火的夫妻游戏《双人成行》第一关里面那个吸尘器的推杆开关&#xff0c;结构中采用阻尼器/滚珠轴承等器件&#xff0c;使其非常具有质感和手感。功能上我构思不能只有电脑开关这么简单地一…

高架学习笔记之软件架构风格

目录 零、什么是软件架构风格 一、常见的软件架构风格 二、数据流风格 2.1. 批处理风格 2.2. 管道-过滤器风格 三、调用/返回风格 3.1. 主/子程序风格 3.2. 面向对象风格 3.3. 层次型风格 3.4. 客户端/服务器风格 3.4.1. 两层C/S体系结构 3.4.2. 三层C/S体系结构 …

Redis报错:CROSSSLOT Keys in request don‘t hash to the same slot的解决方案

最近&#xff0c;项目上线的时候&#xff0c;出现了一个Redis的报错&#xff1a;CROSSSLOT Keys in request dont hash to the same slot&#xff0c;这个在内网环境下无法复现&#xff0c;因为正式环境的Redis是cluster集群模式&#xff0c;而我们内网环境是单机模式。(后面我…

k8s安装,linux-ubuntu上面kubernetes详细安装过程

官方文档&#xff1a;https://kubernetes.io/zh-cn/docs/setup/production-environment/container-runtimes/ 环境配置 该部分每个主机都要执行 如果你确定不需要某个特定设置&#xff0c;则可以跳过它。 设置root登录 sudo passwd root sudo vim /etc/ssh/sshd_config Perm…

深入OceanBase内部机制:资源隔离实现的方式总结

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 目录 1. 为何HTAP需要资源隔离2. OceanBase的资源隔离机制概述租户间资源隔离租户内资源隔离物理资源隔离大查询请求的隔离优先级…

排序 “贰” 之选择排序

目录 ​编辑 1. 选择排序基本思想 2. 直接选择排序 2.1 实现步骤 2.2 代码示例 2.3 直接选择排序的特性总结 3. 堆排序 3.1 实现步骤 3.2 代码示例 3.3 堆排序的特性总结 1. 选择排序基本思想 每一次从待排序的数据元素中选出最小&#xff08;或最大&#xff09;的一个…