机器学习系列(1)_数据分析之Kaggle泰坦尼克之灾(下)

简介: 本篇博客通过分析泰坦尼克号事故中乘客的信息,从而得出一些相关关系的判断,并且使用Python可视化的手段更加具体的展现。

6.名称长度与存活率的关系


## 04.08 名称的长度对生存率的影响
fig,axis1=plt.subplots(1,1,figsize=(14,4))
train_data['Name_length']=train_data['Name'].apply(len) # 这里年龄出现小数,但是使用.astype(float).astype(int)也不行,会报错。直接使用.astype(int)也不行
name_length=train_data[['Name_length','Survived']].groupby(['Name_length'],as_index=False).mean()
sns.barplot(x='Name_length',y='Survived',data=name_length)
# 由图片知:总体来讲:名字越长的存活率越高,分界线是在35

ee6f341c7c414ae5ad43875b6a8b5901.png

7.亲属与存活率之间的关系


这里涉及到直系亲属以及旁系亲属

•Parch(直系亲友,这里就认为是父母与孩子)
•SibSp(旁系,这里就认为是兄弟姐妹)

## 04.09 兄弟姐妹与存活概率(涉及到家族)
sibsp_df=train_data[train_data['SibSp']!=0]
no_sibsp_df=train_data[train_data['SibSp']==0]
plt.figure(figsize=(10,5))
plt.subplot(121)
sibsp_df['Survived'].value_counts().plot.pie(labels=['No Survived','Survived'],autopct='%1.1f%%')
plt.xlabel('sibsp(有兄弟姐妹的)')
plt.subplot(122)
no_sibsp_df['Survived'].value_counts().plot.pie(labels=['No Survived','Survived'],autopct='%1.1f%%')
plt.xlabel('no_sibsp(没有兄弟姐妹的)')
plt.show()

9045cc2b2db447ef8c2bc6e9f9f61f56.png



## 04.10 父母子女与存活概率(涉及到家族)
parch_df=train_data[train_data['Parch']!=0]
no_parch_df=train_data[train_data['Parch']==0]
plt.figure(figsize=(10,5))
plt.subplot(121)
parch_df['Survived'].value_counts().plot.pie(labels=['No Survived','Survived'],autopct='%1.1f%%')
plt.xlabel('parch(父母带小孩)')
plt.subplot(122)
no_parch_df['Survived'].value_counts().plot.pie(labels=['No Survived','Survived'],autopct='%1.1f%%')
plt.xlabel('no_parch(父母与孩子没有在一起的)')
plt.show()

59b69e5d14d24d218f10c3cff7302c9e.png

## 04.10 父母子女与存活概率(涉及到家族)
parch_df=train_data[train_data['Parch']!=0]
no_parch_df=train_data[train_data['Parch']==0]
# 父子关系平均年龄与有无父子关系的比例、数量与存活率关系的比较
plt.figure(figsize=(16,12))
plt.rcParams.update({'font.family': "Microsoft YaHei"})
plt.subplot(2,3,1)
parch_df['Survived'].value_counts().plot.pie(labels=['No Survived','Survived'],autopct='%1.1f%%')
plt.xlabel('parch')
plt.subplot(2,3,2)
parch_df.groupby(['Survived'])['Age'].mean().plot.bar(color='orange',title='有父子关系年龄均值对比')
# plt.xlabel('parch')
plt.subplot(2,3,3)
parch_df.groupby(['Survived'])['PassengerId'].count().plot.bar(color='brown',title='有父子关系数量')
plt.xlabel('parch')
plt.subplot(2,3,4)
no_parch_df['Survived'].value_counts().plot.pie(labels=['No Survived','Survived'],autopct='%1.1f%%')
plt.xlabel('no_parch')
plt.subplot(2,3,5)
no_parch_df.groupby(['Survived'])['Age'].mean().plot.bar(color='orange',title='无父子关系年龄均值对比')
plt.xlabel('no_parch')
plt.subplot(2,3,6)
no_parch_df['Survived'].value_counts().plot.bar(color='brown',title='无父子关系数量')
plt.xlabel('no_parch')
1c9ec0d2064d4ff3a8ed95def246f8d3.png

8.舱位类型与存活率之间的关系


Cabin若为空,也就是没有保存舱位信息,则填充为U0。这里可以推断出有舱位类型的存活率较高。对于乘客,我猜想如果是地位较高的人,他们的舱位信息应该能较好的保存。因为地位低的人可能出现逃票的情况,或者他们更不重视自己的船票号码(舱位信息),因此舱位信息保存率比较低。

# 04.11 舱位类型与存活率
train_data['Has_Cabin']=train_data['Cabin'].apply(lambda x:0 if x=='U0' else 1)
train_data[['Has_Cabin','Survived']].groupby(['Has_Cabin']).mean().plot.bar()

915dba3bb9c24e5db4176046f773e9ae.png


9.对不同类型的船舱进行分析


主要目的:练习pd.dummiespd.factorize的用法

# 04.12 对不同类型的船舱进行分析(涉及到变量转换)主要目的:练习pd.dummies和pd.factorize的用法
import numpy as np
import re
train_data['CabinLetter']=train_data['Cabin'].map(lambda x:re.compile("([a-zA-Z]+)").search(x).group())
# search()可以从任意一个文本里搜索匹配的字符串,即从任何位置里搜索到匹配的字符串
# 从compile()函数的定义中,可以看出返回的是一个匹配对象,它单独使用就没有任何意义,需要和findall(), search(), match()搭配使用。
train_data

f4eac75087544055865cebaee9dbaddc.png

# pd.get_dummies方法
# 使用矩阵的方法显示舱位号
pd.get_dummies(train_data['CabinLetter'])

4f879b5d0f0e48b7aebb381c0a3e29b1.png


train_data=train_data.join(pd.get_dummies(train_data['CabinLetter'])) # 将两张表进行合并附加
# 这样可以方便哑变量(虚拟变量)与不同数据进行关系之间的探讨
train_data

1e723d6d50fa4054b796e1557489b951.png


train_data[['CabinLetter','Survived']].groupby(['CabinLetter']).mean().plot.bar()

不同舱位与存活率之间的关系

31d8bac1f5854c2a9e6205e851671a8e.png


10.出发港口与存活率之间的关系


# 04.13 出发港口与存活率之间的关系
sns.countplot('Embarked',hue='Survived',data=train_data)
plt.title('Embarked and Survived')

b3ff489ed7c845208e0db2714ca024eb.png

相关文章
|
22天前
|
机器学习/深度学习 数据采集 数据挖掘
实战派教学:掌握Scikit-learn,轻松实现数据分析与机器学习模型优化!
【10月更文挑战第4天】Scikit-learn凭借高效、易用及全面性成为数据科学领域的首选工具,简化了数据预处理、模型训练与评估流程,并提供丰富算法库。本文通过实战教学,详细介绍Scikit-learn的基础入门、数据预处理、模型选择与训练、评估及调优等关键步骤,助你快速掌握并优化数据分析与机器学习模型。从环境搭建到参数调优,每一步都配有示例代码,便于理解和实践。
71 2
|
5天前
|
机器学习/深度学习 并行计算 数据挖掘
R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域
【10月更文挑战第21天】R语言是一种强大的统计分析工具,广泛应用于数据分析和机器学习领域。本文将介绍R语言中的一些高级编程技巧,包括函数式编程、向量化运算、字符串处理、循环和条件语句、异常处理和性能优化等方面,以帮助读者更好地掌握R语言的编程技巧,提高数据分析的效率。
17 2
|
22天前
|
机器学习/深度学习 算法 数据挖掘
从零到精通:Scikit-learn在手,数据分析与机器学习模型评估不再难!
【10月更文挑战第4天】在数据科学领域,模型评估是连接理论与实践的桥梁,帮助我们理解模型在未知数据上的表现。对于初学者而言,众多评估指标和工具常令人困惑。幸运的是,Scikit-learn 这一强大的 Python 库使模型评估变得简单。本文通过问答形式,带你逐步掌握 Scikit-learn 的评估技巧。Scikit-learn 提供了丰富的工具,如交叉验证、评分函数(准确率、精确率、召回率、F1 分数)、混淆矩阵和 ROC 曲线等。
29 1
|
2月前
|
机器学习/深度学习 算法 数据挖掘
Python数据分析革命:Scikit-learn库,让机器学习模型训练与评估变得简单高效!
在数据驱动时代,Python 以强大的生态系统成为数据科学的首选语言,而 Scikit-learn 则因简洁的 API 和广泛的支持脱颖而出。本文将指导你使用 Scikit-learn 进行机器学习模型的训练与评估。首先通过 `pip install scikit-learn` 安装库,然后利用内置数据集进行数据准备,选择合适的模型(如逻辑回归),并通过交叉验证评估其性能。最终,使用模型对新数据进行预测,简化整个流程。无论你是新手还是专家,Scikit-learn 都能助你一臂之力。
108 8
|
2月前
|
机器学习/深度学习 数据可视化 数据挖掘
数据可视化大不同!Python数据分析与机器学习中的Matplotlib、Seaborn应用新视角!
在数据科学与机器学习领域,数据可视化是理解数据和优化模型的关键。Python凭借其强大的可视化库Matplotlib和Seaborn成为首选语言。本文通过分析一份包含房屋面积、卧室数量等特征及售价的数据集,展示了如何使用Matplotlib绘制散点图,揭示房屋面积与售价的正相关关系;并利用Seaborn的pairplot探索多变量间的关系。在机器学习建模阶段,通过随机森林模型展示特征重要性的可视化,帮助优化模型。这两个库在数据分析与建模中展现出广泛的应用价值。
44 2
|
3月前
|
数据采集 机器学习/深度学习 算法
"揭秘数据质量自动化的秘密武器:机器学习模型如何精准捕捉数据中的‘隐形陷阱’,让你的数据分析无懈可击?"
【8月更文挑战第20天】随着大数据成为核心资源,数据质量直接影响机器学习模型的准确性和效果。传统的人工审查方法效率低且易错。本文介绍如何运用机器学习自动化评估数据质量,解决缺失值、异常值等问题,提升模型训练效率和预测准确性。通过Python和scikit-learn示例展示了异常值检测的过程,最后强调在自动化评估的同时结合人工审查的重要性。
82 2
|
3月前
|
机器学习/深度学习 搜索推荐 数据挖掘
【深度解析】超越RMSE和MSE:揭秘更多机器学习模型性能指标,助你成为数据分析高手!
【8月更文挑战第17天】本文探讨机器学习模型评估中的关键性能指标。从均方误差(MSE)和均方根误差(RMSE)入手,这两种指标对较大预测偏差敏感,适用于回归任务。通过示例代码展示如何计算这些指标及其它如平均绝对误差(MAE)和决定系数(R²)。此外,文章还介绍了分类任务中的准确率、精确率、召回率和F1分数,并通过实例说明这些指标的计算方法。最后,强调根据应用场景选择合适的性能指标的重要性。
344 0
|
3月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
62 2
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
基于爬虫和机器学习的招聘数据分析与可视化系统,python django框架,前端bootstrap,机器学习有八种带有可视化大屏和后台
本文介绍了一个基于Python Django框架和Bootstrap前端技术,集成了机器学习算法和数据可视化的招聘数据分析与可视化系统,该系统通过爬虫技术获取职位信息,并使用多种机器学习模型进行薪资预测、职位匹配和趋势分析,提供了一个直观的可视化大屏和后台管理系统,以优化招聘策略并提升决策质量。
156 4
|
3月前
|
机器学习/深度学习 算法 数据挖掘
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析
本文介绍了2023年第二届钉钉杯大学生大数据挑战赛初赛A题的Python代码分析,涉及智能手机用户监测数据分析中的聚类分析和APP使用情况的分类与回归问题。
74 0
2023 年第二届钉钉杯大学生大数据挑战赛初赛 初赛 A:智能手机用户监测数据分析 问题二分类与回归问题Python代码分析

热门文章

最新文章