Kaggle竞赛之——泰坦尼克号生还问题

此篇文章翻译自:https://www.kaggle.com/startupsci/titanic-data-science-solutions/code(Kaggle上Titanic问题点赞前三的Notebook)

工作流程:

在数据科学竞赛的解决问题的七个步骤:

1.问题或问题的定义。(理解题目)
2.获得培训和测试数据。(获取数据)
3.争论,准备清理数据。(初步清洗数据)
4.分析、识别模式,并探索数据。(特征工程)
5.模型,预测和解决问题。(机器学习算法介入)
6.可视化报告,并提出解决问题的步骤和最终的解决方案。(调参、优化)

7.供应或提交结果。

理解题目:

像Kaggle这样的比赛网站可以定义要解决的问题或需要提出的问题,同时提供用于训练数据科学模型和根据测试数据集测试模型结果的数据集。泰坦尼克号生存竞赛的问题和问题定义在Kaggle中描述(https://www.kaggle.com/c/titanic):
    
从列出泰坦尼克灾难中幸存或未存活的乘客的样本训练集知道,如果测试数据集中的这些乘客存活与否,我们的模型是否可以基于给定的测试数据集来确定,而测试数据集不包含存活信息。

我们也可能希望对我们问题的领域有所了解。这在Kaggle比赛描述页面描述。以下是要强调的要点:
·
1912年4月15日,在首次航行期间,泰坦尼克号撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。翻译成32%的存活率。
·
海难导致生命损失的原因之一是没有足够的救生艇给乘客和机组人员。
·虽然幸存下来的运气有一些因素,但一些人比其他人更有可能生存,比如妇女,儿童和上层阶级。

需要用到的第三方库的导入:

# data analysis and wrangling
import pandas as pd
import numpy as np
import random as rnd

# visualization
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

# machine learning
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC, LinearSVC
from sklearn.ensemble import RandomForestClassifier
from sklearn.neighbors import KNeighborsClassifier
from sklearn.naive_bayes import GaussianNB
from sklearn.linear_model import Perceptron
from sklearn.linear_model import SGDClassifier
from sklearn.tree import DecisionTreeClassifier

获取数据:

Python为我们提供了一个很好的处理数据集的第三方库Pandas,我们把数据集导入成DataFrame格式,同时新建一个Combine List将训练数据和测试数据组合到一起。

train_df = pd.read_csv(r'文件地址')
test_df = pd.read_csv(r'文件地址’)
combine = [train_df,test_df]

初步分析数据:

Pandas提供的一些方法方便我们熟悉数据集:

在数据集中有什么特征?

#train_df.keys()
print(train_df.columns.values)
['PassengerId' 'Survived' 'Pclass' 'Name' 'Sex' 'Age' 'SibSp' 'Parch'
 'Ticket' 'Fare' 'Cabin' 'Embarked']

特征的数据类型?哪些数据是数值型数据?哪些是非数值类型数据?

哪些特征是分类型?
这些值将样本分为几组相似的样本。 分类特征中的值是名义值,序数值,比值还是区间值? 除此之外,这有助于我们选择合适的图表进行可视化。

     分类:Survived, Sex, and Embarked。 序数:Pclass。

哪些特征是数字型?
哪些功能是数字? 这些值随着样品的不同而不同。 数值特征中的值是离散的,连续的还是时间序列的基础? 除此之外,这有助于我们选择合适的图表进行可视化。
     连续:Age, Fare。 离散型:SibSp,Parch。

哪些特征是混合的数据类型?

在一个特征中既含有数字型同时含有字母型数据,这种类型的数据是作为修正的数据目标。

     Ticket和Cabin

哪些特征也许包含了错误或者拼写错误?

这种错误很难通过浏览庞大的数据集来识别,然而通过随意从数据集中挑选出的小样本可以有一个简单的全局认识,然后这些特征也许需要修正。

     Name

哪些特征包含空格、Null或者空值?

这些特征数据需要被修正

Cabin>Age>Embarked这些特征在训练集中缺失值的排序

Cabin>Age这些特征在测试集中缺失值的排序

特征的数据类型是什么样的?

·七个特征是整型和浮点型数据,测试集中有6个

·五个特征是Object对象

train_df.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
________________________________________
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 418 entries, 0 to 417
Data columns (total 11 columns):
PassengerId    418 non-null int64
Pclass         418 non-null int64
Name           418 non-null object
Sex            418 non-null object
Age            332 non-null float64
SibSp          418 non-null int64
Parch          418 non-null int64
Ticket         418 non-null object
Fare           417 non-null float64
Cabin          91 non-null object
Embarked       418 non-null object
dtypes: float64(2), int64(4), object(5)
memory usage: 36.0+ KB
 PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
train_df.describe()
 PassengerIdSurvivedPclassAgeSibSpParchFare
count891.000000891.000000891.000000714.000000891.000000891.000000891.000000
mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
std257.3538420.4865920.83607114.5264971.1027430.80605749.693429
min1.0000000.0000001.0000000.4200000.0000000.0000000.000000
25%223.5000000.0000002.00000020.1250000.0000000.0000007.910400
50%446.0000000.0000003.00000028.0000000.0000000.00000014.454200
75%668.5000001.0000003.00000038.0000001.0000000.00000031.000000
max891.0000001.0000003.00000080.0000008.0000006.000000512.329200

数值型的特征类型能够看出什么信息?

·数据中的样本量891占实际上船人员2224的40%

·Survived是一个分类特征值取0和1

·大多数乘客(>75%)没有跟父母或者孩子一起出游

·将近30%的乘客有兄弟姐妹或者配偶

·极少数乘客(<1%)支付了像512美元这样的票价

·年纪大的乘客非常少(仅有<1%的乘客是年龄65-80

哪些分类类型的特征可以看出什么信息?

·Names这个特征在数据集中是不重复的

·Sex特征中男女比是13:7(男性乘客多)

·Cabin在样本中有几个dupicates。也有几位乘客共用一间小木屋。

·Embarked有三个不一样的值,S港口上的乘客最多

·Ticket特征有高达22%的重复数据


train_df.describe(include=['O'])
 NameSexTicketCabinEmbarked
count891891891204889
unique89126811473
topLester, Mr. Jamesmale347082G6S
freq157774644



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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值