每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

分箱法在实际案例操作过程中较为常见,能够将一些数据离散化,等级化,比如年龄段,我们并不想知道确切的几岁,于是乎可以将其分组、分段。

基础函数中cut能够进行简单分组,并且可以用于等宽分箱法。

cut函数:cut(x, n):将连续型变量x分割为有着n个水平的因子.(参考来自: R语言︱数据集分组、筛选)

  1. cut(x, breaks, labels = NULL,
  2. include.lowest = FALSE, right = TRUE, dig.lab = 3,
  3. ordered_result = FALSE, ...)

分箱法分为等深分箱(样本量一致,比等宽好)、等宽分箱(cut函数可以直接获取)。

着重看一下等深分箱法,笔者在这根据CDA DSC课程code之上,自己编译了一个等深分箱函数sbdeep。

sbdeep=function(data,parts,xiaoz){
  parts<-parts         #分几个箱
  xiaoz<-xiaoz         #极小值
    value<-quantile(data,probs = seq(0,1,1/parts))  #这里以data等比分为4段,步长为1/4
  number<-mapply(function(x){
    for (i in 1:(parts-1))
    {
      if(x>=(value[i]-xiaoz)&x<value[i+1])
      {
        return(i)
      }
    }
    if(x+xiaoz>value[parts])
    {
      return(parts)
    }
    return(-1)
  },data)
  #打标签L1L2L3L4
  return(list(degree=paste("L",number,sep=""),degreevalue=number,value=table(value),number=table(number)))               #将连续变量转化成定序变量,此时为L1,L2,L3,L4...根据parts
}

该函数是对单个序列数据进行等深分箱,可以返回四类:

一个基于L1L2L3....的每个指标标签序列degree;

标签序列值degreevalue,

每个百分位数对应的变量值value,

不同百分点的数量number。

————————————————————————————————————

应用一:R语言等宽分箱小案例

R语言的等宽分箱法一般都是用cut来获取,但是用法来说在网上还是比较少见的。譬如这里有一个需求就是把连续数列,根据等宽分箱的办法切分开来。这个应该怎么做呢?

来看一个cut的案例:

> a <- c(1,2,3,4,5,6,4,3,2,1)
> cut(a,10)
 [1] (0.995,1.5] (1.5,2]     (2.5,3]     (3.5,4]     (4.5,5]     (5.5,6]     (3.5,4]     (2.5,3]     (1.5,2]     (0.995,1.5]
Levels: (0.995,1.5] (1.5,2] (2,2.5] (2.5,3] (3,3.5] (3.5,4] (4,4.5] (4.5,5] (5,5.5] (5.5,6]
> cut(a,10,labels=F)
 [1]  1  2  4  6  8 10  6  4  2  1

一个数列,简单的cut滞后,就变成一个levels,因子型的一个区间范围,但是这个结果一般不是我们想要的,我们想要对连续数据进行切割。那么就是用R语言中的cut函数的,labels参数。

可以从案例中看到,labels=F之后,就变成了一系列等级型的分组序号,就像聚类一样,模型跑出来之后,就给数列打了一个标签。那么就可以这样选择你想要的,譬如我要选择连续变量的数值上的前10%的数值:

a[cut(a,10,labels=F)==10]

每每以为攀得众山小,可、每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~

———————————————————————————

R语言︱噪声数据处理、数据分组——分箱法(离散化、等级化)的更多相关文章

  1. R语言︱处理缺失数据&&异常值检验、离群点分析、异常值处理

    在数据挖掘的过程中,数据预处理占到了整个过程的60% 脏数据:指一般不符合要求,以及不能直接进行相应分析的数据 脏数据包括:缺失值.异常值.不一致的值.重复数据及含有特殊符号(如#.¥.*)的数据 数 ...

  2. [译]用R语言做挖掘数据《二》

    数据探索 一.实验说明 1. 环境登录 无需密码自动登录,系统用户名shiyanlou,密码shiyanlou 2. 环境介绍 本实验环境采用带桌面的Ubuntu Linux环境,实验中会用到程序: ...

  3. [2]R语言在数据处理上的禀赋之——可视化技术

    本文目录 Java的可视化技术 R的可视化技术 二维做图利器plot的参数配置 *权限机制 *plot独有的参数 *plot的type介绍 *title介绍 *公共参数集合--par *par的权限机 ...

  4. R语言分析朝阳医院数据

    R语言分析朝阳医院数据 本次实践通过分析朝阳医院2016年销售数据,得出“月均消费次数”.“月均消费金额”.“客单价”.“消费趋势”等结果,并据此作出可视化图形. 一.读取数据: library(op ...

  5. R语言实现金融数据的时间序列分析及建模

    R语言实现金融数据的时间序列分析及建模 一 移动平均    移动平均能消除数据中的季节变动和不规则变动.若序列中存在周期变动,则通常以周期为移动平均项数.移动平均法可以通过数据显示出数据长期趋势的变动 ...

  6. R语言之数据处理

    R语言之数据处理 一.向量处理 1.选择和显示向量 data[1] data[3] data[1:3] data[-1]:除第一项以外的所有项 data[c(1,3,4,6)] data[data&g ...

  7. R语言处理Web数据

    R语言处理Web数据 许多网站提供的数据,以供其用户的消费.例如,世界卫生组织(WHO)提供的CSV,TXT和XML文件的形式的健康和医疗信息报告.基于R程序,我们可以通过编程提取这些网站的具体数据. ...

  8. R语言之数据处理常用包

    dplyr包是Hadley Wickham的新作,主要用于数据清洗和整理,该包专注dataframe数据格式,从而大幅提高了数据处理速度,并且提供了与其它数据库的接口:tidyr包的作者是Hadley ...

  9. 利用R语言进行交互数据可视化(转)

    上周在中国R语言大会北京会场上,给大家分享了如何利用R语言交互数据可视化.现场同学对这块内容颇有兴趣,故今天把一些常用的交互可视化的R包搬出来与大家分享. rCharts包 说起R语言的交互包,第一个 ...

随机推荐

  1. kickstart无人值守

    笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 高逼格装系统的方法 Kickstar Cobbler 注意,kickstart并不是一个服务的名称,只是装系统的方 ...

  2. docker挂载NVIDIA显卡运行pytorch

    本文为作者原创,转载请注明出处(http://www.cnblogs.com/mar-q/)by 负赑屃   写在前面: 请参考之前的文章安装好CentOS.NVIDIA相关驱动及软件.docker及 ...

  3. ADB Shell之手机性能测试

    Connect 夜神模拟器for Android 4.4.2 打开模拟器-在CMD输入如下连接测试设备 adb connect 127.0.0.1:62001 你也可以连接自己的手机设备 开发者选项- ...

  4. JAVA配置&注解方式搭建简单的SpringMVC前后台交互系统

    前面两篇文章介绍了 基于XML方式搭建SpringMVC前后台交互系统的方法,博文链接如下: http://www.cnblogs.com/hunterCecil/p/8252060.html htt ...

  5. 同一台机器上多个tomcat启动造成的内存溢出问题的解决方法。

    加下面这句话就行了,我是WIN10+双tomcat+nginx(本地站点),无压力.在编译器的vm option里面加哦. -server -Xms512m -Xmx1024m -XX:PermSiz ...

  6. JFinal源码 分析之 Core包分析

    ActionHandler.java 这个类继承了上面 说的Handler类,首先我们 上 几个属性 ,下面几个 属性我们 需要 关心哪些东西 呢?首先 是ActionMapping和RenderMa ...

  7. BZOJ 2734: [HNOI2012]集合选数 [DP 状压 转化]

    传送门 题意:对于任意一个正整数 n≤100000,如何求出{1, 2,..., n} 的满足若 x 在该子集中,则 2x 和 3x 不能在该子集中的子集的个数(只需输出对 1,000,000,001 ...

  8. Redis服务器启动之后3个警告信息的解决方案

    今天是年前最后一篇文章了,不想写太多的东西,就写一些有关Redis相关问题的解决方案.当我们启动了Redis服务器之后,会看到3个警告,如果没看到,那是很好的,但是我看到了.看到了就不能不管,所以就好 ...

  9. Java中从控制台输入数据的几种常用方法(转)

    一.使用标准输入串System.in  //System.in.read()一次只读入一个字节数据,而我们通常要取得一个字符串或一组数字  //System.in.read()返回一个整数  //必须 ...

  10. docker-compose快速搭建lnmp+redis服务器环境

    因为我用的是MacOS 安装docker sudo yum update sudo tee /etc/yum.repos.d/docker.repo <<-'EOF' [dockerrep ...