正文
关于泰坦尼克号之灾
www.kaggle.com/c/titanic
泰坦尼克号问题背景
就是大家从小到大被洗脑的“u jump I jump”的「jack 和 rose」的故事了。游艇在撞击了一个冰山后沉没了。乘客们都惊慌失措,副船长「lady and kid first」,所以模型不会向抛硬币那样看脸决定你是否获救。而是有着一定背景的,至于出了女士和孩子优先,还有哪些值得我们考虑,这就是稍后我们在特征工程中解决的问题了。
训练和测试数据是一些乘客的个人信息以及存活情况,尝试应用这些数据来建立一个合适的模型进行预测。
这是一个二分类问题(survived 或者 not),本文尝试用 logistic regression 来处理问题
说明
「没有所谓的算法优劣,也没有绝对高性能的机器学习算法,只有在特定的场景、数据和特征下更合适的机器学习的算法。」由于还只是在学习阶段,对于 XGBC、随机森林、SVC 还不了解,本文所用的算法只是 logistic regression。
初识数据
在 Data 下我们会看到官方给的 train.csv 和 test.csv 两个文件,分别是训练和测试数据。我们可以使用 virtualenv 来创建一个“隔离”的 python 应用环境(虚拟环境)。在这里,你不需要考虑系统原有库的版本,只需要 pip 来管理你需要用到的一切。
import pandas as pd
import numpy as np
from pandas import Series,DataFrame
data_train = pd.read_csv("./train.csv" )
pd.DataFrame(data_train)
复制代码
pandas 是常用的 python 数据处理包,把 csv 文件读入成 dataframe 格式,在 jupyter notebook 中,可以看到我们的数据长什么样:
我们就可以把它看作一张 excel 表格,共有 12 列,891 行(代表在 train_csv 中共有 891 个乘客)。Survived 字段代表该乘客是否获救(1 代表获救,0 代表没有获救),其余是一些个人信息
passengerId => 乘客的 ID
Pclass => 乘客所在舱位的等级(1、2、3 等舱)
Name => 姓名
Sex => 性别
Age => 年龄
SibSp => 兄弟姐妹个数
Parch => 父母与小孩个数
Ticket => 船票信息
Fare => 票价
Cabin => 客舱信息
Embarked => 登船所在港口
data_train.info()
复制代码