菜鸟的Kaggle之路(1) Titanic问题的初步分析

今天开始,又一个菜鸟开始走上了自己的Kaggle之路,以练代学,边学边练,不会再查。

基础:coursera 机器学习

正在看:deeplearning.ai课程  和  西瓜书



今天我主要先熟悉了一下pandas和matplotlib的使用,用于观察数据

首先引入(在notebook环境下使用matplotlib需要加一行%matplotlib inline才能正常显示)

注:同时matplotlib不支持中文,需要特殊方式,在此不附

#声明库
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline

之后

#Pandas读取数据,简单浏览数据类型
data_train = pd.read_csv("titanic_train.csv")
data_train.head(10)

#观察一下数据缺失情况
data_train.info()

此时,我开始进行初步的思考,PassengerID,Name显然对是否存活没有用处,其中Sex,Age极有可能影响结果(妇女儿童优先),而同时也可以猜测与Fare,Pclass(代表一个人的社会地位?)有关。

此外的条件Cabin缺失严重,显然不好分析,同时其他条件直观上看影响不大,第一次构建模型时先行省去。

需要注意的是年龄是一个很重要的指标,但是却存在着缺失现象。

#继续观察数据
data_train.describe()

此时,可以更“清楚”地观察到一些信息:在训练集中大约有38%的人存活,平均年龄30岁(有着从不到一岁的孩子到八十岁老人) 等等。

Now,开始去探索一下数据。

#首先,性别这一因素应该会影响很大,先看一下
sm = len(data_train[(data_train['Sex'] == 'male') & (data_train.Survived == 1)].index)
um = len(data_train[(data_train['Sex'] == 'male') & (data_train.Survived == 0)].index)
sw = len(data_train[(data_train['Sex'] == 'female') & (data_train.Survived == 1)].index)
uw = len(data_train[(data_train['Sex'] == 'female') & (data_train.Survived == 0)].index)

#饼状图直观一些
fig = plt.figure()
ax1 = plt.subplot(2,2,1)
labels = 'Men', 'Wowen'
ax1.pie([sm,sw], labels = labels, autopct = '%1.1f%%', shadow = True, startangle = 90)
ax1.axis('equal')
ax1.set_title('Survived',fontsize=12,color='r')  
ax2 = plt.subplot(2,2,2)
labels = 'Men', 'Wowen'
ax2.pie([um,uw], labels = labels, autopct = '%1.1f%%', shadow = True, startangle = 90)
ax2.axis('equal')
ax2.set_title('Unsurvived',fontsize=12,color='r')  
ax3 = plt.subplot(2,2,3)
labels = 'Survived', 'Unsurvived'
ax3.pie([sm,um], labels = labels, autopct = '%1.1f%%', shadow = True, startangle = 90)
ax3.axis('equal')
ax3.set_title('Men',fontsize=12,color='r')  
ax4 = plt.subplot(2,2,4)
labels = 'Survived', 'Unsurvived'
ax4.pie([sw,uw], labels = labels, autopct = '%1.1f%%', shadow = True, startangle = 90)
ax4.axis('equal')
ax4.set_title('Women',fontsize=12,color='r')  
plt.plot()
plt.show()

在得到性别确实影响着存活率的同时,这一环节还让我熟悉了matplotlib中子图与饼状图的使用

#其次看一下仓位因素
fig = plt.figure()
Us = data_train.Pclass[data_train.Survived == 0].value_counts()
S = data_train.Pclass[data_train.Survived == 1].value_counts()
df = pd.DataFrame({'Survived':S, 'Unsurvived':Us})
df.plot(kind='bar', stacked=True)
plt.title("The rescue of each passenger level ")
plt.xlabel("Level") 
plt.ylabel("Number of people") 
plt.xticks(rotation = 0)
plt.show()


柱状图的使用和堆叠

#仓位与年龄的关系
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('Age')
plt.ylabel("Density") 
plt.title('Age distribution density ')
plt.legend(('C1','C2','C3'),loc='best')
plt.show()


折线图的使用

#票价,年龄,是否存活
age = data_train.Age[data_train.Survived == 1]
fare = data_train.Fare[data_train.Survived == 1]
plt.scatter(age, fare, color = 'b', marker='.',alpha = 1)
age = data_train.Age[data_train.Survived == 0]
fare = data_train.Fare[data_train.Survived == 0]
plt.scatter(age, fare, color = 'r', marker='x',alpha = 0.6)
plt.show()

#把低票价去掉以后,依然发现,关系似乎存在,但并不密切
age = data_train.Age[(data_train.Fare > 50) & (data_train.Survived == 1)]
fare = data_train.Fare[(data_train.Fare > 50) & (data_train.Survived == 1)]
plt.scatter(age, fare, color = 'b', marker = '.',alpha = 1)
age = data_train.Age[(data_train.Fare > 50) & (data_train.Survived == 0)]
fare = data_train.Fare[(data_train.Fare > 50) & (data_train.Survived == 0)]
plt.scatter(age, fare, color = 'r', marker = 'x',alpha = 0.6)
plt.show()

散点图的使用


至此我熟悉了一下pandas和matplotlib的使用,同时观察了数据,坚定了我使用这四大特征的信心

下一节希望可以用这四大特征建立一个简单的模型

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值