专栏名称: 大数据挖掘DT数据分析
实战数据资源提供。数据实力派社区,手把手带你玩各种数据分析,涵盖数据分析工具使用,数据挖掘算法原理与案例,机器学习,R语言,Python编程,爬虫。如需发布广告请联系: hai299014
目录
相关文章推荐
大数据分析和人工智能  ·  一周3200,建议大家用DeepSeek变现 ... ·  昨天  
CDA数据分析师  ·  数据分析的核心工具:指标体系构建全攻略 ·  2 天前  
CDA数据分析师  ·  《CDA一级教材》电子版上线CDA网校,助你 ... ·  3 天前  
软件定义世界(SDX)  ·  中信建投:DeepSeek如何加速金融业数字 ... ·  3 天前  
数据派THU  ·  10²⁶参数,AGI还需70年!清华人大预测 ... ·  3 天前  
51好读  ›  专栏  ›  大数据挖掘DT数据分析

完整的R语言预测建模实例-从数据清理到建模预测

大数据挖掘DT数据分析  · 公众号  · 大数据  · 2017-02-23 21:39

正文



数据挖掘入门与实战  公众号: datadw


本文使用Kaggle上的一个公开数据集,从数据导入,清理整理一直介绍到最后数据多个 算法 建模,交叉验证以及多个预测模型的比较全过程,注重在实际数据建模过程中的实际问题和挑战,主要包括以下五个方面的挑战:

  1. 缺失值的挑战

  2. 异常值的挑战

  3. 不均衡分布的挑战

  4. (多重)共线性的挑战

  5. 预测因子的量纲差异

以上的几个主要挑战,对于熟悉 机器学习 的人来说,应该都是比较清楚的,这个案例中会涉及到五个挑战中的缺失值,量纲和共线性问题的挑战。

案例数据说明

本案例中的数据可以在下面的网址中下载:
https://www.kaggle.com/primaryobjects/voicegender/downloads/voicegender.zip
下载到本地后解压缩会生成 voice.csv 文件
下面首先大概了解一下我们要用来建模的数据

数据共包含21个变量,最后一个变量label是需要我们进行预测的变量,即性别是男或者女
前面20个变量都是我们的预测因子,每一个都是用来描述声音的量化属性。
下面我们开始我们的具体过程

步骤1:基本准备工作

步骤1主要包含以下三项工作:

  1. 设定工作目录

  2. 载入需要使用的包

  3. 准备好并行计算



步骤2:数据的导入和理解

数据下载解压缩后就是一份名为 ‘voice.csv’ 的文件,我们将csv文件存到我们设定的工作目录之中,就可以导入数据了。

### read in original dataset

voice_Original read_csv("voice.csv",col_names=TRUE) describe(voice_Original)
Hmisc包中的describe 函数是我个人最喜欢的对数据集进行概述,整体上了解数据集的最好的一个函数,运行结果如下:



通过这个函数,我们现在可以对数据集中的每一个变量都有一个整体性把握。
我们可以看出我们共有21个变量,共计3168个观测值。

由于本数据集数据完整,没有缺失值,因而我们实际上并没有缺失值的挑战,但是为了跟实际的数据挖掘过程相匹配,我们会人为将一些数据设置为缺失值,并对这些缺失值进行插补,大家也可以实际看一下我们应用的插补法的效果:


可以看出,我们的插补出来的值和原始值之间的差异是比较小的,可以帮助我们进行下一步的建模工作。

另外一点,我们在实际工作中,我们用到的预测因子中,往往包含数值型和类别型的数据,但是我们数据中全部都是数值型的,所以我们要增加难度,将其中的一个因子转换为类别型数据,具体操作如下:


图形结果如下:



但是我们更关注的是,预测因子之间是不是存在高度的相关性,因为预测因子间的香瓜性对于一些模型,是有不利的影响的。
对于研究预测因子间的相关性, corrplot 包中的corrplot函数提供了很直观的图形方法:

###find correlations between factors
factor_Corr 9,21)])
corrplot(factor_Corr,method="number")



步骤3:数据分配与建模

在实际建模过程中,我们不会将所有的数据全部用来进行训练模型,因为相比较模型数据集在训练中的表现,我们更关注模型在训练集,也就是我们的模型没有遇到的数据中的预测表现。
因此,我们将我们的数据集的70%的数据用来训练模型,剩余的30%用来检验模型预测的结果。

### separate dataset into training and testing sets
sample_Index $label,p=0.7,list=FALSE) voice_Train

但是我们还没有解决之前我们发现的一些问题,数据的量纲实际上是不一样的,另外某些因子间存在高度的相关性,这对我们的建模是不利的,因此我们需要进行一些预处理,我们又需要用到 preProcess







请到「今天看啥」查看全文