本文主要用kaggle网站上的泰坦尼克号生存数据信息,来进行机器学习的入门。其中用到的是逻辑回归算法。
一、提出问题
什么样的人在泰坦尼克号中更容易存活?
二、理解数据
1、数据来源
2、导入数据
测试数据集比训练数据集少一列,是因为测试数据集里缺少生存情况这一列,这一列是需要我们通过构建模型进行预测的。
pandas的append( )为添加新元素,在表尾中添加新行,并且返回添加后的数据对象。
3、查看数据集信息
通过Df.describe( )方法获取数据集的描述统计信息:
describe( )只能查看数据类型的描述统计信息,对于其他类型的数据不显示,比如字符串类型姓名(name),客舱号(Cabin),此时使用 info( )的方法查询所有列的信息。
可以发现,数据总共有1309行,Age、Cabin、Embarked、Fare 四列各有不同程度的缺失
三、数据清洗
包括数据预处理和特征工程两部分
首先进行数据预处理:
1、如果是数值类型,用平均值取代
2、如果是分类数据,用最常见的类别取代
用平均值对数值类型缺失值进行填充,Df['列名'].fillna( )
登船港口的缺失个数为 2,用常见数据进行填充
对于船舱号Cabin的处理:
查看填充缺失值以后的数据框信息
对于Survived生存情况列,因为是要用来预测的,所以不需要处理。
接下来进行特征工程:
特征工程就是最大限度的从原始数据中提取特征,以供机器学习算法和模型使用。
共包含两部分:1 特征提取 ,2 特征选择和降维
1、特征提取:
对不同数据类型有不同的提取方法:
性别Sex:
登船港口Embarked:
使用数据框的get-dummies( )对登船港口进行one-hot编码
船舱等级Pclass:
姓名Name:
乘客每个名字当中都包含了具体的称谓或者说是头衔,将这部分信息提取出来后可以作为非常有用的一个新变量,可以帮助我们进行预测。
查询头衔的类别和数量:
发现有些头衔并不是常见头衔,而且出现频率比较低,这样不利于机器学习。通过网上对头衔的分类,可将头衔分为6类Officer,Royalty,Mrs,Miss,Mr,Master六种,
船舱号Cabin:
同样的方法对船舱号进行分类,并删除原Cabin列,将新的数据合并到 full 数据集上。
家庭数据Parch、Sibsp:
对于家庭数据选择计算家庭人数的方法提取特征
2、特征选择
首先使用corr( )生成相关系数矩阵
再查看各个特征与生存情况的相关性:
最后选择相关性较高的7类数据为模型特征。
四、构建模型
首先提取特征和标签:
然后建立训练数据和测试数据:
Kaggle给出的训练数据集共有891条,所以这里也选择前891条数据作为训练数据。
最后训练模型:
五、评估模型
六、方案实施
对预测数据进行预测,将结果上传Kaggle
最终分数和排名: