天天看点

机器学习实例-titanic数据预处理

加载数据集,打印前五行:

0 Braund, Mr. Owen Harris male 22.0 1 1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 2 Heikkinen, Miss. Laina female 26.0 0 3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 4 Allen, Mr. William Henry male 35.0 0 Parch Ticket Fare Cabin Embarked 0 0 A/5 21171 7.2500 NaN S 1 0 PC 17599 71.2833 C85 C 2 0 STON/O2. 3101282 7.9250 NaN S 3 0 113803 53.1000 C123 S 4 0 373450 8.0500 NaN S

查看原始数据统计结果:

count 891.000000 891.000000 mean 0.381594 32.204208 std 0.806057 49.693429 min 0.000000 0.000000 25% 0.000000 7.910400 50% 0.000000 14.454200 75% 0.000000 31.000000 max 6.000000 512.329200

可以看到Age这一项有缺失值。

填充缺失值有很多种方法,最常见的比如说均值填充,中位数填充,等等。

首先看一下年龄数据的原始分布状况:

先用均值填充:

可以明显看到图像已经变形,虽然也可以用均值填充的数据进行训练,但如果可以改进填充方式,就可以使数据分布更接近实际。

于是我们提取一些与年龄相关的特征,比如船票(年轻人通常比较穷,富人年纪大),家庭成员数量,兄弟姐妹数量,船舱等级等。

在正式训练数据前,先通过线性回归大致预测一下年龄缺失的部分人的年龄。

可以看到,船票价格相比其他数据非常高,先对船票价格进行标准化处理

数据处理结束,分割数据集:

训练模型,预测结果,填充缺失值:

填充结果如上图,相比均值填充,通过模型填充缺失值得到了更符合真实分布的数据。