泰坦尼克号-数据挖掘 初次探索

接触数据挖掘内容较少,加之本次写作业较为匆忙,只能借鉴大佬思路进行相应的探索,后续会合理安排工作与学习时间,挤出时间认真完成作业!!

本次参考文献来源于@https://segmentfault.com/a/1190000017266921

数据探索

之前断断续续做过中文文本分类项目,通过朴素贝叶斯原理,使用多项式算法建立模型对商品进行打标签,才算是首次接触数据挖掘,通过中文文本分类,第一次了解过拟合、交叉验证、TF-IDF、词向量等等术语,不断地加深对数据挖掘的认知,而本次泰坦尼克-数据挖掘项目,算是另一种“分类”角度去探索数据,处理数据,最后给出结论

2019.1.5 还是想啰嗦一下,毕业6个多月了,算上实习差不多快两年了,工作这么久,还是没有入数据分析的门,顶着“数据分析师”的title浑浑噩噩过了大半年,到今天算是一个终点吧。既然决定要去做数据开发,走BI工程师-->数据挖掘工程师的路线,那就沉下心来,认真工作,积极学习,虔诚对待每一件事。
本次对泰坦尼克号数据初次挖掘,分为以下几点:
	1. 查看数据整体结构
	2. 数据探索
	3. 找寻数据之间关系
	4. 筛选“特征”
	5. 缺失值填补
	6. 异常值处理
	.......................

查看数据整体结构

在这里插入图片描述
字段间长度不一致,存在缺失值
在这里插入图片描述
从 mean 行中约有 0.38 的人最后获救了,乘客的平均年龄为 29.7 岁,平均票价为 32.20
最终的 output 是 Suvived,现在需要寻找最后的 Survived 与各个属性之间有着什么样的内在关系。
凭个人认知筛选如下字段
Characteristics = [‘Pclass’, ‘Age’, ‘Sex’, ‘SibSp’, ‘Parch’, ‘Cabin’]
在这里插入图片描述在这里插入图片描述在本图中,我们发现女性有 0.74 活下来,而男性只有 0.18。歪果盆友果然很尊重 lady,lady first 践行得不错。性别无疑要作为重要特征加入最后的模型之中。在 Pclass 中,客舱为等级 1 的乘客获救的概率高很多。
在这里插入图片描述
数据可视化,如果是等级1的客人,存活率会高很多

data_train.Age[data_train.Pclass == 1].plot(kind=‘kde’)
data_train.Age[data_train.Pclass == 2].plot(kind=‘kde’)
data_train.Age[data_train.Pclass == 3].plot(kind=‘kde’)
plt.xlabel(“age”)# plots an axis lable
plt.ylabel(“dendity”)
plt.title(“Age distribution of passengers levels”)
plt.legend((‘first level’, ‘second level’,‘third level’),loc=‘best’)
在这里插入图片描述
从各等级乘客的年龄分布中,我们可以看到「不同舱位/乘客等级可能和财富/地位有关系,最后获救概率可能会不一样」,所以年龄也会是影响我们最终结果的原因之一。

简单数据处理

通常遇到缺值的情况,我们会有几种常见的处理方式

1. 如果缺值的样本占总数比例极高,我们可能就直接舍弃了,作为特征加入的话,可能反倒带入 noise,影响最后的结果了
2. 如果缺值的样本适中,而该属性非连续值特征属性(比如说类目属性),那就把 NaN 作为一个新类别,加到类别特征中
3. 如果缺值的样本适中,而该属性为连续值特征属性,有时候我们会考虑给定一个 step(比如这里的 age,我们可以考虑每隔 2/3 岁为一个步长),然后把它离散化,之后把 NaN 作为一个 type 加到属性类目中。
4. 有些情况下,缺失的值个数并不是特别多,那我们也可以试着根据已有的值,拟合一下数据,补充上(用一些机器学习算法补充,k最邻近,回归等)。

本例中,因为 Cabin 不是影响最终结果的特征之一。所以直接考虑别的需要用到的特征(性别,等级),并将其中的类目型转化为数值型特征,我们可以使用 pandas 的“get_dummies”来完成这个工作,并接在原来的“data_train”上。

dummies_Sex = pd.get_dummies(data_train[‘Sex’], prefix= ‘Sex’)
dummies_Pclass = pd.get_dummies(data_train[‘Pclass’], prefix= ‘Pclass’)
df = pd.concat([data_train, dummies_Embarked, dummies_Sex, dummies_Pclass], axis=1)
df.drop([‘Pclass’, ‘Name’, ‘Sex’, ‘Ticket’, ‘Embarked’], axis=1, inplace=True)
在这里插入图片描述
接下来需要对不同维度数据进行压缩(归一化处理)
如果各属性之间的 scale 差距太大,将对收敛速度造成很大的伤害(甚至不收敛)

本次数据探索因为没有规划好时间,所以探索很仓促,导致结果很糟糕,为了赶时间提交作业,导致作业质量很低,下次会避免这些问题,用心做作业。
打卡!

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值