Kaggle简单分类问题实战
因为在准备下个学期的数模比赛,想着就拿Kaggle上的机器学习比赛练练手,熟悉一下sklearn库的一些算法。笔者也是由易入难,所以一开始选了一个比较简单的分类问题。
比赛的题目也贴在了下方👇。
首先,我们在kaggle上参加一个比赛就要先去看比赛的要求和这个比赛提供的相关数据集。
比赛要求和数据集如下图👇
我们可以从上图看到这是一个二分类问题,并且从我对数据集的形状输出也可以看到我们的数据都是40维的,并且我们最终要输出的应该是针对测试集给出的9000个标签。
那么接下来我们就要开始一步一步的完成这项任务了。
读取数据
首先这里我们用pd.read_csv读取三个csv文件,当然了,文件名都是自己取得哈,并且记得如果不想加文件路径直接导入的话,请把文件和jupyter文件放在同一目录下。
这里有个小细节就是read_csv函数中有一个header的参数,如果不把这个参数设置为None,那么在读数据的时候为默认把第一行数据作为标题,而如果设置为None,则会帮我们加一个0,1,2…N的标题
数据清洗
在数据清洗部分,我们首先是要判断各个维度的数据有没有缺失值。
在这个步骤中,我们使用pd.count()函数对数据集进行判断。这里可以看到一共四十个维度(由于截图大小原因只有前24个),每个维度的数据量都是1000,和train数据形状中的1000相吻合,说明了该数据集中没有缺失数据(真的很简单哈,之前做的房价预测的数据集都是大几百的缺失值)
因为这里数据没有缺失,所以就少了对缺失值做处理的步骤。
特征工程
这里先简单介绍一种数据相关性的分析,因为本题各个维度的数据也没有名称,所以其实分析相关性也很难判断出有什么实际的意义
这里我们使用.corr()函数算出各个数据之间的协方差来判断不同维度之间的相关性,颜色越红代表越相关,因为协方差矩阵肯定是对称的并且对角线上必定相关性是1,所以我们可以看到上图
进行预测
还是处于介绍的目的,所以这里我也只是用了一个逻辑回归去进行分类
这里我们可以看到我们用.predict()函数就已经得到了对应的标签,但是我们根据提交要求是需要交一个csv文件,所以我们先用pd.dataframe()函数把label转换为dataframe类型的数据。
接着我们把dataframe数据写成csv文件格式,这时在当前目录下我们就可以看到一个名叫label的文件,此时提交这个文件作为我们的答案就行了
总结
首先总的来说,该问题属于是很简单的一个二分类问题,并且数据集中也没有缺失数据需要处理,所以我们就直接用逻辑回归就可以简单的得出答案。但是如果这是按照我上面这样做并不能得到非常好的结果,因为数据中还是有可以做文章的地方,并且还有很多其它的分类算法可以尝试。不过,这篇文章写出来的目的也是让大家知道在做一个kaggle的比赛时大题有哪几个步骤去做,并没有追求很高的正确率。