kaggle 入门:逻辑回归应用之Kaggle泰坦尼克之灾

这篇博客介绍了如何利用逻辑回归在Kaggle上解决泰坦尼克号灾难的生存预测问题。作者首先分析了数据集,发现乘客等级、性别、登船港口等因素与生存率有关。然后进行了数据预处理,包括处理缺失值和类别特征。通过逻辑回归建模,得到了初步模型,并进行了模型优化,包括特征工程和交叉验证。最终,模型在Kaggle上获得了较好的预测结果。
摘要由CSDN通过智能技术生成

经典又兼具备趣味性的Kaggle案例泰坦尼克号问题

kaggle入门——逻辑回归应用之kaggle泰坦尼克之灾 原文连接:https://blog.csdn.net/han_xiaoyang/article/details/49797143#commentBox
https://www.kesci.com/home/project/5bfe39b3954d6e0010681cd1

背景

关于Kaggle
  • 我是kaggle地址,翻我牌子
  • 这就是哪个无数【数据挖掘先驱】们,在回答”枪我有了,哪能找到靶子练练手啊?“时候的答案

Kaggel是一个要数据有数据,要实际应用场景有场景,要一起在数据挖掘领域high得不要不要的小伙伴就有小伙伴的地方啊!!!
据挖掘竞赛),企业或者研究者可以将问题背景、数据、期望指标等发布到Kaggle上,以竞赛的形式向广大的数据科学家征集解决方案。而热爱数(dong)据(shou)挖(zhe)掘(teng)的小伙伴们可以下载/分析数据,使用统计/机器学习/数据挖掘等知识,建立算法模型,得出结果并提交,排名top的可能会有奖金哦!

关于泰坦尼克号之灾
  • 下面是问题的背景页
    在这里插入图片描述

  • 可下载Data的页面
    在这里插入图片描述

  • 下面是小伙伴们最爱的forum页面,你会看到各种神级人物厉(qi)害(pa)的数据处理/建模想法,你会直视『世界真奇妙』。
    在这里插入图片描述

  • 泰坦尼克号问题背景

    • 就是那个大家都熟悉的『Jack and Rose』的故事,豪华游艇倒了,大家都惊恐逃生,可是救生艇的数量有限,无法人人都有,副船长发话了『lady and kid first!』,所以是否获救其实并非随机,而是基于一些背景有rank先后的。
    • 训练和测试数据是一些乘客的个人信息以及存活状况,要尝试根据它生成合适的模型并预测其他人的存活状况。
    • 对,这是一个二分类问题,是我们之前讨论的logistic regression所能处理的范畴。

初探数据

先看看数据长什么样,在Date下我们的train.csv和test.csv两个文件分别存着官方给的训练和测试数据。

import pandas as pd #数据分析
import numpy as np #科学计算
from pandas import Series,DataFrame

data_train = pd.read_csv("e:/data/Titanic_data/train.csv")
data_train.columns

输出

Index(['PassengerId', 'Survived', 'Pclass', 'Name', 'Sex', 'Age', 'SibSp',
       'Parch', 'Ticket', 'Fare', 'Cabin', 'Embarked'],
      dtype='object')

看到大概有以下这些字段

PassengerId =>乘客ID

Pclass => 乘客登记(1/2/3等舱位)

Name => 乘客姓名

Sex =>性别

Age => 年龄

SibSp => 堂兄弟/妹个数

Parch => 父母与小孩个数

Ticket => 船票信息

Fare => 票价

Cabin => 客舱

Embarked =>登船港口

查看数据集信息

data_train.info()

<class ‘pandas.core.frame.DataFrame’>
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

上面的数据可以看出来,训练数据总共又891名乘客,但是有些属性数据不全,比如说:

  • Age(年龄) 属性只有714名乘客是有记录
  • Cabin(客舱) 更是只有204名乘客是已知的

    再查看一下数值的具体情况
data_train.describe()

在这里插入图片描述
由mean字段的值,大概0.383838的人最后获救了,2/3等舱人数要比1等舱多,平均乘客年龄大概是29.7岁…
上面的简单描述性信息并没有什么用,需要更细力度的分析数据

数据初步分析

仅仅上面的对数据的了解,依旧无法提供给我们想法和思路。再深入一点看看数据

查看每个/多个 属性和最后的Survived之间有什么样的关系

乘客各属性分布
import matplotlib.pyplot as plt
%matplotlib inline
fig = plt.figure()
fig.set(alpha=0.2) #设定图表颜色alpha参数

plt.subplot2grid((2,3),(0,0)) #在一张大图里分列几个小图
plt.rcParams['font.sans-serif'] = ['SimHei'] #指定默认字体
plt.rcParams['axes.unicode_minus'] = False #解决中文显示为方框的问题
data_train.Survived.value_counts().plot(kind='bar') #柱状图
plt.title("获救情况 (1为获救)") #标题
plt.ylabel("人数")

plt.subplot2grid((2,3),(0,1))
data_train.Pclass.value_counts().plot(kind='bar')
plt.ylabel("人数")
plt.title("乘客等级分布")

plt.subplot2grid((2,3),(0,2))
plt.scatter(data_train.Survived,data_train.Age) #散点图
plt.ylabel("年龄")
plt.grid(b=True,which='major',axis='y') #显示y轴网格
plt.title("按年龄看获救分布 (1为获救)")

plt.subplot2grid((2,3),(1,0),colspan=2)
data_train.Age[data_train.Pclass == 1].plot(kind='kde')
data_train.Age[data_train.Pclass == 2].plot(kind='kde')
data_train.Age[data_train.Pclass == 3].plot(kind='kde')
plt.xlabel("年龄")
plt.ylabel("密度")
plt.title("各等级的乘客年龄分布")
plt.legend(('头等舱','2等舱','3等舱'),loc='best')  #显示图例

plt.subplot2grid((2,3),(1,2))
data_train.Embarked.value_counts().plot(kind='bar')
plt.title("各登船口岸上船人数")
plt.ylabel("人数")
plt.show()

在这里插入图片描述
在图上可以看出来,被救的人300多点,不到半数;3等舱人数非常多,遇难和获救的人年龄跨度似乎都很广;3个不同舱年龄总体趋势似乎也一致,2/3等舱乘客20多岁的人最多,1等舱40岁左右的最多(似乎符合财富和年龄的分配);登船港口人数按照S、C、Q递减,而且s远对于另外两个港口。

现在可能会有一些想法了:

  • 不同仓位/乘客等级了能和财富/地位有关系,最后获救的概率可能会不一样
  • 年龄对获救概率也一定是有影响的,副船长说 小孩和女士先走
  • 和登船港口是不是也有关系呢?也许登船港口不同,人的身份地位不同?
    口说无凭,空想无益,老老实实再来统计统计,看看这些属性值的统计分布。

属性与获救结果的关联统计

查看各乘客等级的获救情况
fig = plt.figure()
fig.set(alpha=0.2) #设定图表颜色alpha参数

Survived_0 = data_train.Pclass[data_train.Survived == 0].value_counts()
  • 4
    点赞
  • 37
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
逻辑回归Kaggle泰坦尼克之灾竞赛中的应用主要是用于预测乘客是否幸存。在这个竞赛中,我们可以将乘客的特征(如性别、年龄、船票等级等)作为自变量,将乘客是否幸存作为因变量,通过训练逻辑回归模型来预测新乘客的生存情况。 以下是逻辑回归Kaggle泰坦尼克之灾竞赛中的一般步骤: 1. 数据探索和预处理:首先,我们需要对数据进行探索,了解各个特征的分布情况、缺失值情况等。然后,我们可以对缺失值进行填充、对分类变量进行编码等预处理操作。 2. 特征工程:根据对数据的理解和领域知识,我们可以进行特征工程,提取新的特征或者对原有特征进行组合,以提高模型的性能。 3. 数据划分:将数据集划分为训练集和测试集,通常采用交叉验证的方法进行模型选择和调参。 4. 模型训练:使用逻辑回归算法对训练集进行拟合,并根据模型评估指标(如准确率、精确率、召回率等)选择最佳模型。 5. 模型调参:可以通过网格搜索等方法对模型的超参数进行调优,以获得更好的性能。 6. 模型评估:使用测试集对训练好的模型进行评估,得到模型在未知数据上的性能指标。 7. 预测并提交结果:使用训练好的模型对新的数据进行预测,并将结果提交到Kaggle平台上进行评估和排名。 逻辑回归是一个简单而有效的分类算法,在泰坦尼克之灾竞赛中有着广泛的应用。但是要注意,逻辑回归并不是唯一可用的算法,根据数据集的性质和特点,我们也可以尝试其他的分类算法来提高预测性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值