一起挖掘幸福感

简介

天池上的一个新人赛,属于比较简单的回归赛(由于target只有5个值也有人理解为分类赛,但是注意平台评分使用的是MSE,分类会使得分不合适),适合作为EDA的教程。本文内容将主要倾向于数据探索部分(EDA),建模预测部分不多提。建模思路为对高维特征降维后利用xgboost进行预测。

处理过程

数据获取

数据由官方提供,可以下载到自己的环境中也可以使用天池实验室进行数据集读取(我也将数据上传到Drive云盘)。

  • 文件说明

    • happiness_index.xlsx 调查结果表中各个字段及其不同值的含义说明。
    • happiness_submit.csv 平台提交结果示例文件,利用pandas读取修改结果后提交到平台即可。
    • happiness_survey_cgss2015.pdf 居民调查问卷的PDF文件(对比赛没有用处)。
    • happiness_test_abbr.csv 简化版的测试集文件,包含除了target之外的所有特征中的一部分,特征较少,便于新手建模。
    • happiness_test_complete.csv 完整版的测试集文件,包含除了target之外的所有特征中的全部,特征较多,适合有经验的玩家。
    • happiness_train_abbr.csv 简化版的训练集文件,包括target以及所有特征中的一部分,特征较少,便于新手建模。
    • happiness_train_complete.csv 完整版的训练集文件,包括target以及所有特征中的全部,特征较多,适合有经验的玩家。

数据探索(初步)

  • 数据量

    • 原始数据中,共8000个训练数据,2968个测试数据,除target外有139个特征。
  • 目标分布
    • 有12个异常值为-8,可以删除,为了保证数据完整,将其替换为3(不是幸福也不是不幸福)。
  • 数据类型
    • 大部分为整型数据,少部分为object,需要解析为数值(通过逐列输出,survey_time应为时间类型,调整读取代码如下。)。
    df_train = pd.read_csv('happiness_train_complete.csv', encoding='gbk', parse_dates=['survey_time'])
    df_test = pd.read_csv('happiness_test_complete.csv', encoding='gbk', parse_dates=['survey_time'])
    
  • 统计值
    • 包括每一列的数据量、均值、标准差、最值、分位数等。
  • 相关性
    • 绘制相关矩阵图,建模是高相关特征必须只取一个(图中各项设计不错,无高相关)。

数据预处理

  • 异常值处理

    • 目标替换

      • 将-8统一换为3。
      • df_train['happiness'] = df_train['happiness'].replace(-8, 3)
  • 缺失值处理
    • 检查缺失值

    • 处理缺失值
      • 依据index说明文件,hukou_loc的缺失使用4(表示待定)填充合理,其他如收入family_income使用均值填充。
      •   def fill_data(df):df['hukou_loc'] = df['hukou_loc'].fillna(4)df['family_income'] = df['family_income'].fillna(df['family_income'].mean())df.fillna(0, inplace=True)  # 其余使用0填充
        
  • 属性构造
    • 构造年龄
    •         def generator_attribute(df):df['survey_time'] = df['survey_time'].dt.yeardf['age'] = df['survey_time'] - df['birth']generator_attribute(df_train)generator_attribute(df_test)```

探索性数据分析(EDA,基于处理后的较为完美的数据)

  • 整体幸福状况

    •   plt.figure(figsize=(16, 8))plt.subplot(1, 2, 1)df_train['happiness'].value_counts().plot(kind='pie', autopct='%1.1f%%')plt.subplot(1, 2, 2)df_train['happiness'].value_counts().plot(kind='bar')plt.savefig('happiness_distribution.png')
      
      • 大于等于4表示幸福,77.8%的人是幸福的,这说明当今时代,大部分人还是对身处的环境感到幸福的。
  • 局部幸福情况
    • 男女幸福状况

      •   plt.figure(figsize=(16, 8))sns.countplot(data=df_train, x='gender', hue='happiness')plt.title('different happiness level by gender')plt.savefig('gender_bar.png')
        
      •   plt.figure(figsize=(16, 8))plt.subplot(1, 2, 1)df_train['happiness'][df_train['gender'] == 1].value_counts().plot(kind='pie', autopct='%1.1f%%')plt.subplot(1, 2, 2)df_train['happiness'][df_train['gender'] == 2].value_counts().plot(kind='pie', autopct='%1.1f%%')plt.title('different happiness level percent by gender')plt.savefig('gender_pie.png')
        
      • 整体看来,男女的幸福感差异不大。
    • 户口幸福状况
      • 农村和城市户口分析,类似上面的性别分析,整体看来,城市人员幸福感略高于农村人员。
    • 不同年龄段幸福状况
      • 类似上面,利用pandas做个筛选即可。
    • 不同收入段幸福状况
      • 类似上面,利用pandas做个筛选即可。

模型构建

  • 说明

    • 本文建模思路主要使用归一化+PCA(主成分分析)+全连接网络。
  • 代码
    • 见Github的笔记本文件(ipynb)。
  • 提交结果
    • 使用简单的全连接神经网络score为0.6148。

补充说明

  • 项目源码上传至我的Github,欢迎Star或者Fork。本文注重EDA而不是建模。 如有错误,欢迎指正。

数据挖掘竞赛-一起挖掘幸福感EDA相关推荐

  1. 人大附中高中生学Python获数据挖掘竞赛一等奖,将去旷视科技实习

    本文授权转自光明社教育家(微信ID:jyjzzwx) 作者 | 翟小宁 武迪 朱星宇是人大附中2011级早培班的一名学生,现在在高三出国班上课.他在学校的身份不只是学生,同时也是计算机视觉与深度学习研 ...

  2. 机器学习训练营--快来一起挖掘幸福感吧

    文章目录 前言 一.赛题理解 1.1 实验环境 1.2 背景介绍 1.3 数据信息 1.4 评价指标 二.探索性数据分析(EDA)& 特征工程 2.1 为什么要做探索性数据分析 2.2 探索性 ...

  3. 【经验分享】我的数据挖掘竞赛之路及秋招总结

    作者 | 宇智波子光(cqlll.github.io) 学校 | 东南大学 研究 | 数据科学 出品 | AI蜗牛车 写在前面 大家好,我是一名机器学习爱好者.即便是这样简单的开头,不知为何,我仍有一 ...

  4. 用户查询意图检测(CIKM Competition数据挖掘竞赛夺冠算法陈运文)

    原文出处 背景\color{blue}{背景} CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称.CIKM全称是International C ...

  5. 2019KDD CUP | 2019国际知识发现和数据挖掘竞赛

    国际知识发现和数据挖掘竞赛 [1]  (KDD-CUP)竞赛是由ACM 的数据挖掘及知识发现专委会(SIGKDD)主办的数据挖掘研究领域的国际顶级赛事.其中KDD的英文全称是Knowledge Dis ...

  6. 【数据竞赛】盘点数据挖掘竞赛中的泄露(Leak)

    作者:姬哀,江离数据挖掘俱乐部 本文是姬哀同学总结的泄露案例和识别方法,非常值得阅读和学习,文章较长建议收藏. 0 前言 泄露是常见的. 如果在一场比赛的中后期,有一些队伍的成绩异常,明显超出常规方案 ...

  7. CIKM Competition数据挖掘竞赛夺冠算法陈运文

    CIKM Competition数据挖掘竞赛夺冠算法陈运文 背景 CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖掘竞赛的名称.CIKM全称是Intern ...

  8. CIKM Competition数据挖掘竞赛夺冠算法-陈运文

    原文地址:http://www.52nlp.cn/cikm-competition-topdata 背景 CIKM Cup(或者称为CIKM Competition)是ACM CIKM举办的国际数据挖 ...

  9. 机器学习赛事:快来一起挖掘幸福感

    快来一起挖掘幸福感(完整篇) 本学习笔记为阿里云天池龙珠计划机器学习训练营的学习内容,学习链接为:AI训练营机器学习-阿里云天池 赛题介绍(虽然上面链接里已经有了赛题介绍,但我还是把它摘抄下来了,绝对 ...

最新文章

  1. 著名加密库收集 Encrypt
  2. 冒泡排序 快速排序 插入排序 选择排序
  3. [模板] tarjan/联通分量/dfs树
  4. java cookie 永久_java web中cookie的永久创建与撤销
  5. python编程语言图解_Python程序运行原理图文解析
  6. 怎样在html中插入ppt,PPT怎么插入网页中的视频
  7. 做了个小工具,可以一键导出所有微信表情包,有趣的表情包,不再只限一个APP使用,【微信表情包吸血鬼】
  8. Word2019 插入脚注问题
  9. 航运大数据——机遇和挑战
  10. 用最通俗易懂的话告诉你交换机和路由器的区别
  11. linux 免费 版本,五个免费的轻量级Linux发行版
  12. C语言 客户端服务端发送消息
  13. 软件开发之版本控制方式
  14. 深度学习训练之optimizer优化器(BGD、SGD、MBGD、SGDM、NAG、AdaGrad、AdaDelta、Adam)的最全系统详解
  15. 计算机网络--错题集
  16. (转)第三十七节、人脸检测MTCNN和人脸识别Facenet(附源码)
  17. 【Lua编程基础】实测Lua中点和冒号的区别
  18. 5W1H聊开源之Who和How——谁、如何参与开源?
  19. 模仿电影院座位预定效果
  20. 百度搜索推出细雨算法,看看对你有什么影响?

热门文章

  1. 用java编写博弈树_并行博弈树搜索算法-第1篇 什么是博弈树搜索算法
  2. 流量复制/流量重定向
  3. SQL淘宝用户数据分析
  4. 杨老师课堂_Java教程第四篇之数组运用
  5. 石大师如何一键重装系统win10
  6. ggplot2 调整图像颜色
  7. laravel5.8(十八)laravel 解决groupBy时出现的错误 isn“t in Group By问题
  8. wsl运行ubuntu切换默认登录用户
  9. OpenCV实现多张图像拼接
  10. C++-009-setw、setfill操作符与left,right