Kaggle | Titanic - Machine Learning from Disaster【泰坦尼克号生存预测】 | baseline及优秀notebook总结

这篇博客总结了Kaggle泰坦尼克号生存预测比赛的一些优秀notebook,包括使用的基本特征如性别、阶级、登船港口,以及不同的模型如LightGBM、KNN、SVM、神经网络等。还提到了特征工程,如从名字中提取信息、填充缺失值和构建新特征。此外,也讨论了模型融合和超参数调优的方法,如stacking和标签编码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、数据介绍

  Titanic - Machine Learning from Disaster是主要针对机器学习初学者开展的比赛,数据格式比较简单,为结构化数据。数据的数量较少(训练集892条,测试集419条),因此,就算找到有效的特征有良好的准确度,但很有可能因为一些小变动就让准确度下降。事实上,Public Leaderboard分数较高的notebook,未必对未知数据有良好的预测能力,可能只是过度比对测试数据碰巧得到吻合的结果罢了。在泰坦尼克号公开资料集中,每个用户有如下特征:

  • Survived: 是否存活(label)
  • PassengerId: (乘客ID)
  • Pclass(用户阶级):1 - 1st class,高等用户;2 - 2nd class,中等用户;3 - 3rd class,低等用户;
  • Name(名字)
  • Sex(性别)
  • Age(年龄)
  • SibSp:描述了泰坦尼克号上与乘客同行的兄弟姐妹(Siblings)和配偶(Spouse)数目;
  • Parch:描述了泰坦尼克号上与乘客同行的家长(Parents)和孩子(Children)数目;
  • Ticket(船票号)
  • Fare(乘客费用)
  • Cabin(船舱)
  • Embarked(港口):用户上船时的港口

二、代码

  代码实现包含如下基本步骤:

  • 特征处理
  • 模型搭建
  • 模型调参
  • 模型集成(融合)
#!usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: liujie
@file: titanic.py
@time: 2022/09/08
@desc:Kaggle案例——泰坦尼克号
"""
import numpy as np
import pandas as pd
from xgboost import XGBClassifier
from sklearn.model_selection import KFold
from sklearn.preprocessing import LabelEncoder
from sklearn.metrics import log_loss, accuracy_score

# TODO:1.构造训练集与测试集
train = pd.read_csv("data/train.csv", sep=",", header=0)
test = pd.read_csv("data/test.csv", sep=",", header=0)
x_train = train.drop(['Survived'], axis=1)
y_train = train['Survived']
x_test = test.copy()

# TODO:2.建立特征
# 去除 PassengerId,Name, Ticket, Cabin
x_train = x_train.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)
x_test = x_test.drop(['PassengerId', 'Name', 'Ticket', 'Cabin'], axis=1)
# 对Sex、Embarked进行label encoding
for c in ["Sex", "Embarked"]:
    le = LabelEncoder()
    le.fit(x_train[c].fillna("NA"))

    x_train[c] = le.transform(x_train[c].fillna("NA"))
    x_test[c] = le.transform(x_test[c].fillna("NA"))

# TODO:3.建立模型
xgb = XGBClassifier(n_estimators=20, random_state=2022)
xgb.fit(x_train, y_train)  # 训练
pred = xgb.predict_proba(x_test)[:, 1]  # 预测
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幼稚的人呐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值