赞
踩
过去的一学期中,上了一门叫做《非参数统计》的课程,老师的要求是用latex或者Rmarkdown写作业,编程语言必须用R。课程结束发现自己成绩还不错,回顾这一学期,每次的作业书写对我的帮助很大:将零零散散的知识框架和代码整理成册,是一种复习也是学习的好方法。kaggle的这个泰坦尼克号的案例在最开始接触python数据分析的时候就做过,现将代码思路整理处理,作为自己参加kaggle比赛的练习案例。其中也有参考过别人的做法,将其做了融合。
进行数据分析前,首先要明确目的,然后拿到的数据集做大致的了解。
1、数据集:
训练集:乘客ID(passengerID)、是否被救(Survivd)、船舱等级(Pclass)、Name(姓名)、性别(Sex)、年龄(Age)、兄弟姐妹和配偶数(SibSp)、父母和孩子数(Parch)、票号、船价(Fare)、客舱号码(Cabin)、登船港口(Embarked)
测试集: 缺少是否被救(Survived)一列。
2、载入数据集并查看数据规模
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import RandomForestClassifier
from sklearn.ensemble import GradientBoostingClassifier
from sklearn import cross_validation
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
#读取数据
train=pd.read_csv('train.csv')
test=pd.read_csv('test.csv')
train.info()
test.info()
从图中我们可以看到:年龄(Age)、cabin、embarked(只训练集)、Fare(只测试集)都有缺失值。
缺失值处理一般有以下几种方法:
missing_embarked=train.Embarked.dropna().mode().values train.Embarked=train.Embarked.fillna(str(missing_embarked))
train.Cabin=train.Cabin.fillna('m')
age_df=train[['Age','Survived','Fare','Parch','SibSp','Pclass']]
age_df_notnull=age_df.loc[(train.Age.notnull())]
age_df_isnull=age_df.loc[(train.Age.isnull())]
X=age_df_notnull.loc[:,['Survived','Fare','Parch','SibSp','Pclass']]
Y=age_df_notnull.loc[:,'Survived']
#使用随机森林预测
model1=RandomForestClassifier(n_estimators=1000, n_jobs=-1)
model1.fit(X,Y)
predict_age=model1.predict(age_df_isnull.loc[:,['Survived','Fare','Parch','SibSp','Pclass']])
train.loc[train['Age'].isnull(),'Age']=predict_age
缺失值填充后的数据集如下:train.info()
在这一部分,采用直观的图方式,大致了解一下相关属性与死亡之间的关系。
我们按照性别将训练集分类,得到的结果如下:
group1=train['Survived'].groupby(train['Sex'])
group1.count()
group1.mean().plot.bar()
group1.mean().plot(kind='bar')
plt.title('Survived probabality of different sex')
female一共有314人,male一共有577人。在女性中的存活率是0.74,在男性中的是0.18889,所以在这一数据集中体现了“女士优先”的原则:女性的存活率远远高于男性。
group2=train['Survived'].groupby(train['Pclass'])
group2.count()
group2.mean()
group2.mean().plot(kind='bar')
plt.title('Survived probabality of different Pclass')
运行结果显示:在一等船舱共有216人,存活率为0.63;二等船舱共有184人,存活率为0.47;二等船舱共有491人,存活率为0.24;通过条形图也能够很清楚的看出:船舱等级越高(1>2>3),存活机率越高。
将性别和船舱等级综合来看:
group3=train.groupby(['Sex','Pclass'])['Survived']
group3.count()
group3.mean()
group3.mean().
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。