Kaggle初体验之泰坦尼特生存预测

Python机器学习中的DictVectorizer(特征向量化)的使用说明 特征转换最近在看《PYTHON机器学习及实践+从零开始通往KAGGLE竞赛之路》这本书,书中采用最简单直接的方式介绍了机器学习的入门实践语句,简单介绍原理以后,就开始代码实现了。刚好看到一个例子,关于DictVectorizer的使用,很是喜欢这种操作方式,代码如下:from sklearn.feature_extraction import DictVectorizer dict_vec = ... 阅读详情

Kaggle初体验之泰坦尼特生存预测


学习完了决策树的ID3、C4.5、CART算法,找一个试手的地方,Kaggle的练习赛泰坦尼特很不错,记录下

流程

    首先注册一个账号,然后在顶部菜单栏Competitions里面搜索Titanic,找到Titanic练习赛,练习赛就用用于帮助新手入门的,在比赛的页面有很多的入门推荐,很值得去一看。

  • 获取数据集
  • 探索数据集
  • 清洗数据集
  • 特征选择
  • 训练数据集
  • 预测数据集
  • 提交结果文件

获取数据集

    数据集在比赛面板菜单栏的Data里面,有三个数据集

  • train.csv:训练数据集
  • test.csv:需要预测结果的数据集
  • gender_submission.csv:预测结果提交模板(直接提交这个都能达到77%的准确率,而自己写的Python调用机器学习算法的才75%,有意思)

探索数据集

    拿到数据集以后我们需要看看里面是写什么内容,数据完整不完整之类的。在网站上对数据列的说明如下:

  • PassengerId:乘客编号
  • Survived:是否幸存
  • Pclass:船票等级
  • Name:乘客姓名
  • Sex:乘客性别
  • SibSp:亲戚数量(兄妹、配偶数)
  • Parch:亲戚数量(父母、子女数)
  • Ticket:船票号码
  • Fare:船票价格
  • Cabin:船舱
  • Embarked:登录港口

    使用的Python代码如下:

import pandas as pd

train_data = pd.read_csv("../docs/train.csv")
test_data = pd.read_csv("../docs/test.csv")
# 了解数据表的基本情况:行数、列数、每列的数据类型、数据完整度;
print(train_data.info())
print("_"*30)
# 了解数据表的统计情况:总数、平均值、标准差、最小值、最大值
print(train_data.describe())
print("_"*30)
# 查看字符串类型(非数字)的整体情况
print(train_data.describe(include=['O']))
print("_"*30)
# 查看前五行数据
print(train_data.head())
print("_"*30)
# 查看后五行数据
print(train_data.tail())
print("_"*30)

    运行结果大致如下:

RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
PassengerId    891 non-null int64
Survived       891 non-null int64
Pclass         891 non-null int64
Name           891 non-null object
Sex            891 non-null object
Age            714 non-null float64
SibSp          891 non-null int64
Parch          891 non-null int64
Ticket         891 non-null object
Fare           891 non-null float64
Cabin          204 non-null object
Embarked       889 non-null object
dtypes: float64(2), int64(5), object(5)
memory usage: 83.6+ KB
None
______________________________
       PassengerId    Survived      Pclass  ...       SibSp       Parch        Fare
count   891.000000  891.000000  891.000000  ...  891.000000  891.000000  891.000000
mean    446.000000    0.383838    2.308642  ...    0.523008    0.381594   32.204208
std     257.353842    0.486592    0.836071  ...    1.102743    0.806057   49.693429
min       1.000000    0.000000    1.000000  ...    0.000000    0.000000    0.000000
25%     223.500000    0.000000    2.000000  ...    0.000000    0.000000    7.910400
50%     446.000000    0.000000    3.000000  ...    0.000000    0.000000   14.454200
75%     668.500000    1.000000    3.000000  ...    1.000000    0.000000   31.000000
max     891.000000    1.000000    3.000000  ...    8.000000    6.000000  512.329200

[8 rows x 7 columns]
______________________________
                            Name   Sex  Ticket    Cabin Embarked
count                        891   891     891      204      889
unique                       891     2     681      147        3
top     Allen, Mr. William Henry  male  347082  B96 B98        S
freq                           1   577       7        4      644
______________________________
   PassengerId  Survived  Pclass  ...     Fare Cabin  Embarked
0            1         0       3  ...   7.2500   NaN         S
1            2         1       1  ...  71.2833   C85         C
2            3         1       3  ...   7.9250   NaN         S
3            4         1       1  ...  53.1000  C123         S
4            5         0       3  ...   8.0500   NaN         S

[5 rows x 12 columns]
______________________________
     PassengerId  Survived  Pclass  ...   Fare Cabin  Embarked
886          887         0       2  ...  13.00   NaN         S
887          888         1       1  ...  30.00   B42         S
888          889         0       3  ...  23.45   NaN         S
889          890         1       1  ...  30.00  C148         C
890          891         0       3  ...   7.75   NaN         Q

[5 rows x 12 columns]

清洗数据集

    通过探索发现Age、Fare和Cabin这三个数据有所缺失,Age和Fare都为数值型,简单的使用平均数进行补齐,Cabin为字符串型,其中S最多,简单将缺失的填为S吧

train_data["Age"].fillna(train_data["Age"].mean(), inplace=True)
test_data["Age"].fillna(test_data["Age"].mean(), inplace=True)

train_data["Fare"].fillna(train_data["Fare"].mean(), inplace=True)
test_data["Fare"].fillna(test_data["Fare"].mean(), inplace=True)

train_data["Embarked"].fillna("S", inplace=True)
test_data["Embarked"].fillna("S", inplace=True)

特征选择

    通过数据探索,PassengerId为乘客编号,对分类没用,Name为乘客姓名,也没用;Cabin字段缺失值太多,暂时放弃;Ticket为船票号码,杂乱无章且无规律,放弃;剩下的字段就是:Plass、Sex、Age、SibSp、Parch、Fare、Embarked,接下来就将这些特征作为训练数据,并将数据中的符号化对象转换成数字对象进行表示。

from sklearn.feature_extraction import DictVectorizer

features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']
train_features = train_data[features]
train_labels = train_data['Survived']
test_features = test_data[features]

dvec=DictVectorizer(sparse=False)
train_features = dvec.fit_transform(train_features.to_dict(orient='record'))

训练数据集

    使用Python的机器学习库中决策树训练一个模型,

from sklearn.tree import DecisionTreeClassifier
clf = DecisionTreeClassifier(criterion="entropy")
clf.fit(train_features, train_labels)

预测数据集

    对测试数据集里面的数据进行测试,并将结果输出到csv文件中,用于Kaggle的提交

test_features = dvec.transform(test_features.to_dict(orient="record"))
    pred_labels = clf.predict(test_features)
    print(test_features)
    print(pred_labels)
    print("_"*30)

with open("submission.csv", encoding="utf-8", mode="w", newline="") as f:
    write = csv.writer(f, delimiter=",", quotechar='"', quoting=csv.QUOTE_MINIMAL)
    write.writerow(["PassengerId", "Survived"])
    count = 0
    for item in test_data.values:
        print(item[0])
        write.writerow([item[0], pred_labels[count]])
        count = count + 1

    可以做一些验证,前者是简单的使用训练数据进行验证,后者是K折交叉验证

import numpy as np
from sklearn.model_selection import cross_val_score

acc_decision_tree = round(clf.score(train_features, train_labels), 6)
print(acc_decision_tree)
print("_"*30)

print(np.mean(cross_val_score(clf, train_features, train_labels, cv=10)))

提交结果文件

    点击Kaggle泰坦尼特比赛页面的Submit Predictions,提交上一步生成的结果文件submission.csv,比赛名次在1万多名左右,嘿嘿,名次不是关键,这次的尝试还是有点意思,简单了解了整个预测过程和Kaggle的流程。

后面自己进行的一些尝试

  • Age和Fare改用中位数补全:没有平均数好,预测才69%,平均数是73%

参考链接

Kaggle-泰坦尼克号项目 | 小白修炼之路的开始 作为一名萌生转行想法大概2个月的小白,第一个月艰难的学习了execl,python,mysql的基础用法,第二个月开始尝试在不断学习的过程中,增加一些实践的部分,所以这篇文章就诞生了!所以也就是说这篇文章菲比个人开启自己转行之路的里程碑式文章,哈哈哈! 阅读详情

相关推荐

机器学习经典Kaggle案例:泰坦尼克号:从灾难中学习机器

kaggle链接:https://www.kaggle.com/c/titanic 一、简介 泰坦尼克号案例可以说是kaggle的“hello world”,入门者的必看案例。 1.1 比赛描述 RMS泰坦尼克号沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。这场耸人听闻的悲剧震惊了国际社会,并为...

weixin_42662126的博客 2万+

泰坦尼克号乘客生存预测(决策树)

#泰坦尼克号乘客生存预测 import pandas as pd from sklearn.tree import DecisionTreeClassifier from sklearn.feature_extraction import DictVectorizer import numpy as np from sklearn.model_selection import cross_val_score from sklearn import tree import graphviz #数据加载 t.

Persist_bcl的博客 1174

sklearn集合算法预测泰坦尼克号幸存者

原文: http://ihoge.cn/2018/sklearn-ensemble.html 随机森林分类预测泰坦尼尼克号幸存者 import pandas as pd import numpy as np def read_dataset(fname): data = pd.read_csv(fname, index_col=0) data.drop(['Name',...

机器学习算法 2261

机器学习模型代码详细解释

据进行转换和规范化'target'labels针对不平衡数据集的处理mino_nummajo_numsmo_ratiosmo_ratio据进行转换和规范化:这是一个用于将字典类型的特征转换成稀疏矩阵或密集矩阵的工具。在这里,首先创建了一个对象dvec,然后使用方法将训练特征转换为字典形式并进行转换操作,最终得到稀疏或密集矩阵。测试特征也会被相同的转换方式处理,但是这里使用了方法,因为测试数据应该使用与训练数据相同的转换规则。:这是一个用于特征缩放的工具,它通过移除平均值和缩放到单位方差来标准化特征。

EaSoNgo111的博客 1321

kaggle泰坦尼克数据titanic

平台下载的原始三个数据train.csv test.csv gender_submission.csv (本来想0积分 分享给大家 无奈最低是1分了)

16-1泰坦层克号旅客生存预测案例分析与数据处理.zip

其实无论多么复杂的问题,都是万变不离其宗,在深度学习方面更是这样,就是模拟人类的神经网络,通过多层的处理和优化,进一步达到与真实值相近的程度。 步骤: 1、数据预处理 2、建立模型 3、开始训练 4、评估模型准确率

决策树

一、CART算法 1、基于iris数据集,构造CART分类树 # encoding=utf-8 from sklearn.model_selection import train_test_split from sklearn.metrics import accuracy_score from sklearn.tree import DecisionTreeClassifier from sklearn.datasets import load_iris # 准备数据集 iris=load_iris()

weixin_42948291的博客 912

echarts实现折线图上下限区域展示

效果图: 画这种区域中主要是利用了series的两个属性: 思路:上下限都画上区域,然后折线利用图形透明度隐藏,给上区域加上颜色,给下区域加上白色(echarts图背景是啥色,就加啥色) lineStyle: { opacity: 0 }, // 图形透明度。支持从 0 到 1 的数字,为 0 时不绘制该图形 areaStyle: { color: 'rgba(0,122,255,0.1)' }, // 填充的颜色 我的需求是最大天数、最小天数、

小太阳的博客 1万+

『Sklearn』特征向量化处理

『Kaggle』分类任务_决策树&集成模型&DataFrame向量化操作 1 2 3 4 5 6 7 8 9 '''特征提取器''' from sklearn.feature_extraction import DictVectorizer   vec = DictVectorizer(sparse=False) ...

weixin_34417635的博客 1102

pytorch-cifar100学习资料汇总 - 基于PyTorch的CIFAR-100图像分类实践

pytorch-cifar100是一个基于PyTorch实现CIFAR-100数据集图像分类的开源项目。该项目实现了多种经典的深度学习网络模型,如ResNet、DenseNet、VGG等,为开发者提供了在CIFAR-100数据集上进行图像分类实验的代码范例。pytorch-cifar100项目为我们提供了在CIFAR-100数据集上进行图像分类实验的完整代码实现。无论你是想要学习PyTorch的使用,还是研究不同网络模型在CIFAR-100上的表现,这个项目都是一个很好的起点。

helloaiworld的博客 1121

红外小目标检测新思路:当DETR遇上Mamba状态空间模型,速度提升3倍

本文探讨了将Mamba状态空间模型与DETR框架结合,用于解决红外小目标检测的难题。该创新方案通过线性复杂度的Mamba模块替代传统Transformer的自注意力机制,在保持高检测精度的同时,显著提升了推理速度,实现了实时性能的突破,为无人机巡检、安防监控等场景提供了高效解决方案。

hhh00的博客 664

决策树(下):泰坦尼克乘客生存预测

决策树(下):泰坦尼克乘客生存预测 决策树分类的应用场景有很多,比如在金融行业用决策树做贷款风险评估,医疗行业用决策树生成辅助诊断,用sklearn工具解决泰坦尼克乘客生存预测: sklearn中的决策树模型 sklearn中自带的决策树分类器DecisionTreeClassifier clf = DecisionTreeClassifier(criterion='entropy') 在构建D...

ywangjiyl的博客 824

Windows环境下IBSIMU的安装

本文主要介绍离子束仿真程序IBSIMU在Windows环境下的安装。

C_Tso的博客 2988

机器学习入门:Kaggle -titanic(泰坦尼克)生存预测

萌新入门机器学习的第一个手把手案例 零基础尝试Kaggle-Titanic - Machine Learning from Disaster 附代码

cutenew52188的博客 1万+

【2025年华为秋招(AI)-11月19日-第一题(100分)- 选择题】(题目+思路+Java&C++&Python解析+在线测试)

本文摘要: 本文包含15道单选题和5道多选题,涵盖机器学习、深度学习、概率统计和数值计算等多个领域。单选题涉及Transformer的Softmax层作用、最小二乘法拟合、概率密度计算、注意力机制、反向传播问题、ROC曲线用途、截断误差来源等知识点。多选题考察大模型训练技术、BERT/GPT比较、强化学习对齐方法、CNN常见层以及PCA特性等内容。题目设计注重理论与实践结合,既包含数学推导,又关注前沿技术应用,全面检验读者对机器学习核心概念的理解能力。正确答案均附有详细解析,帮助理解相关技术原理。

m0_73659489的博客 145

AXI总线详解完结篇

经过几个月的整理和发文,AXI总线详解系列正式迎来最终篇,内容基本涵盖了上一篇文章的全部内容。 所有文章的链接如下: 1、 AXI总线详解 2、AXI总线详解-总线和接口以及协议 3、AXI协议中的通道结构 4、AXI总线详解-AXI4读写操作时序及AXI4猝发地址及选择 5、AXI4交换机制 6、ZYNQ中DMA与AXI4总线-DMA简介 7、AXI总线详解-不同类型的DMA 8、AXI总线详解-DMA内部寄存器的读写方式 9、AXI总线详解-几种应用DMA的场合 10、Altera Scatter-G.

OpenFPGA的博客 5484

机器学习系列(3)_逻辑回归应用之Kaggle泰坦尼克之灾

作者: 寒小阳 &&龙心尘 时间:2015年11月。 出处:http://blog.youkuaiyun.com/han_xiaoyang/article/details/49797143 声明:版权所有,转载请注明出处,谢谢。 1.引言 先说一句,年末双十一什么的一来,真是非(mang)常(cheng)欢(gou)乐(le)!然后push自己抽出时间来写这篇blog的原因也非...

iteye_2022的博客 5818

KEPServerEX物联网网关(IoT Gateway)REST客户端代理(非原创)

(中文版)资料来源于【OPC-KEPServerEX学习KEPWare交流】905485143群的【455196383】【零下一度】 一。KEPServerEX物联网网关REST客户端代理演示 在KSE中,首先构建一个带有通道/设备/标签的模拟器系统。 例如,下面是三个随机项目。 直接到IoT网关插件,添加新代理。 从类型列表中选择REST Client。 终结点...

-雲飛兄-博客 5805

kaggle泰坦尼克号生存预测(附代码、数据集和答案)

kaggle泰坦尼克号生存预测(附代码、数据集和答案) 之前总结的数据预处理方法:https://blog.youkuaiyun.com/qq_43012160/article/details/98462307 先看一下数据集: 这次需要分类的标签被存储在了训练集的Survived列里,1表示生还,0表示遇难。 显然这次的特征是有缺失值的,读入数据集,看一下训练集和测试集的长度及各特征的缺失情况: #看...

qq_43012160的博客 4万+

Android11原生设置屏幕亮由Gamma变化改为线性变化

从Android9 开始屏幕亮度调解变成非线性变化,这样的话就会出现 之前亮度变化很小,到后面时变化亮度很快; 修改为线性变化,只需要修改 ./frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java /* * Copyright (C) 2018 The Android Open Source Project * * Licensed under the Apache L

Android 4923

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Kaggle泰塔尼克号生存预测

学习Pandas的用法# Import the Pandas library import pandas as pd # Load the train and test datasets to create two DataFrames train_url = "http://s3.amazonaws.com/assets.datacamp.com/course/Kaggle/train.csv"

fendoubasaonian的专栏 1559

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

2 机器学习入门——逻辑回归之kaggle泰坦尼克号竞赛

前面几篇逻辑回归的例子有些是人造出来的,有些是比较正规的,但数据都比较完整,没有缺失的属性。虽然我们在很多数据上取到的非常好的效果,但总感觉好像不够味,不像实战。所有的数据下载地址:https://gitee.com/tianyalei/machine_learning,按对应章节查找。那么这里有个地方给带给你想要的实战——Kaggle数据分析建模的应用竞赛平台,企业或者研究者可以将问题背景、数据...

tianyaleixiaowu的专栏 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Kaggle--泰坦尼克号失踪者生死情况预测源码(附Titanic数据集)

数据可视化分析import pandas as pd import matplotlib.pyplot as plt import seaborn as sns import numpy as np titanic=pd.read_csv('train.csv') #print(titanic.head()) #设置某一列为索引 #print(titanic.set_index('Passeng...

sir_chai的博客 1万+

【机器学习300问】139、Post-LN 和 Pre-LN 的区别?

Post-LN与Pre-LN的核心区别在于LayerNorm的位置:Post-LN在残差连接后,导致梯度需经LayerNorm变换,深层易出现梯度衰减或震荡;Pre-LN先做归一化,使输入稳定,残差路径梯度可无损回传,显著提升深层训练稳定性。尽管Pre-LN支持更深层次模型(如LLaMA、Qwen),但存在“深度诅咒”——深层贡献不足。相比之下,Post-LN浅层表现尚可,深层数易发散。因此,现代大模型普遍采用Pre-LN以保障训练可靠性。

qq_39780701的博客 365

python 机器学习 交叉验证train_test_split 网格搜索GridSearchCV

最佳参数: {'metric': 'euclidean', 'n_neighbors': 3, 'weights': 'uniform'}交叉验证 用于在数据集中拆分成测试集和验证集,用于模型训练和验证。最佳交叉验证得分: 0.9428571428571428。网格搜索 用于自动查找最合适的模型参数,用于模型调优。测试集准确率: 1.0。

frt的博客 242
上一篇: Docker Java程序镜像制作
下一篇: Nginx负载均衡
_萧_
博客等级 码龄10年 55粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值