kaggle实战之Titanic (1)-预处理

本文介绍了一个在kaggle上的Titanic数据集预处理过程,包括填充缺失值、离散化特征和创建新特征。通过处理Age、SibSp、Parch、Embarked、Sex等字段,构建了6类特征,并尝试了不同的特征提取方法,如家庭成员数量、带婴母亲和儿童标志,以及利用决策树填充年龄。经过一系列操作,模型准确率达到了0.77,但进一步提升效果有限。
摘要由CSDN通过智能技术生成

数据挖掘的知识可知,数据预处理包括:
(1) 数据清理:填写缺失值,光滑噪声数据等等。
(2) 数据集成:将多个数据源合成一个数据源。此处只有1个csv文件,过
(3) 数据变换:平滑聚集,数据概化等。
(4) 数据规约: 目的是减小数据量,同时又不影响结果。此处数据共891<1000行,暂不处理

PassengerId 旅客ID
Survived 是否活下来了,1:yes 0:no
Pclass 旅客等级 1 2 3 依据某博客的分析可以基本认为与票价Fare正相关
Name 名字
Sex 性别
Age 年龄
SibSp 有多少兄弟姐妹/配偶同船
Parch 有多少父母/子女同船
Ticket 船票号码
Fare 船票收费
Cabin 所在小屋
Embarked 登船城市 C Q S 分别代表不同的城市
对该实际问题,妇女、儿童和上层阶级更容易幸存,而年龄代表身体素质,父母兄弟可以互助,但此处父母对于儿童是“正”,对于中青年是“负”,房间位置与碰撞时的角度有关也影响存活率,而以下将会重点对这几项进行处理。

1、数据清理
首先通过excel表格发现Age, Cabin, Embarked字段有空值需要填充:Age属性考虑使用平均值29.69911765记为30,Cabin房间号的值各不相同,观察所有幸存者并未发现明显规律,只好暂不使用该“幸运”因素。Embarked直观上与存活率关系不大,观察发现S市644人,空白2人,以多数填充方式处理
以上直接在csv文件中处理
2、数据变换
SibSp 8=7 5=5 4=18 3=16 2=28 共74个 < 100看做一类 记 0,1,2
Parch 2、3、4、5、6共95个也看做一类 记 0,1,2
Age 以[0:16), [16:40),[40:99)离散化处理
Fare 票价与Pclass和Parch、SibSp相关,亲朋通常会入住同一房间
Embarked S计0,C记1,Q记2
Sex 男记1,女记2

至此,共Pclass,Sex, Age , SibSp, Parch, Embarked 6类特征,加上Survived为target,提取如下:

#读文件
def load_data(filename):
    csvfile = file(filename, 'rb')
    reader = csv.reader(csvfile)
    datafile = []
    for line in reader:
        datafile.append(line)
        #print line
    csvfile.close()
    return datafile

#预处理
def data_clean(datafile):
    l = len(datafile)
    print l
    target = [0 for i in range(l)]
    datamat = [[0 for j in range(6)] for i in range(l)]
    for i in range(l):
        datamat[i][0] = int(datafile[i][1]) #C
        if(datafile[i][3] == 'male'):
             datamat[i][
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值