此篇文章翻译自: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
# preview the data train_df.head() train_df.info() train_df.describe() train_df.describe(include=['O'])
PassengerId | Survived | Pclass | Name | Sex | Age | SibSp | Parch | Ticket | Fare | Cabin | Embarked | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | 1 | 0 | 3 | Braund, Mr. Owen Harris | male | 22.0 | 1 | 0 | A/5 21171 | 7.2500 | NaN | S |
1 | 2 | 1 | 1 | Cumings, Mrs. John Bradley (Florence Briggs Th... | female | 38.0 | 1 | 0 | PC 17599 | 71.2833 | C85 | C |
2 | 3 | 1 | 3 | Heikkinen, Miss. Laina | female | 26.0 | 0 | 0 | STON/O2. 3101282 | 7.9250 | NaN | S |
3 | 4 | 1 | 1 | Futrelle, Mrs. Jacques Heath (Lily May Peel) | female | 35.0 | 1 | 0 | 113803 | 53.1000 | C123 | S |
4 | 5 | 0 | 3 | Allen, Mr. William Henry | male | 35.0 | 0 | 0 | 373450 | 8.0500 | NaN | S |