啊啊啊啊啊吖

2018-11-26   阅读量: 3806

数据分析师 R语言 数据挖掘

常用的离散化方法

扫码加入数据分析学习群

常用的离散化方法有等宽法、 等频法和(一维) 聚类。

(1) 等宽法

该法将属性的值域分成具有相同宽度的区间, 区间的个数由数据本身的

特点决定, 或者由用户指定, 类似于制作频率分布表。

(2) 等频法

该法将相同数量的记录放进每个区间。

这两种方法简单, 易于操作, 但都需要人为地规定划分区间的个数。 同

时, 等宽法的缺点在于它对离群点比较敏感, 倾向于不均匀地把属性值分布

到各个区间。 有些区间包含许多数据, 而另外一些区间的数据极少, 这样会

严重损坏建立的决策模型。 等频法虽然避免了上述问题的产生, 却可能将相

同的数据值分到不同的区间以满足每个区间中固定的数据个数。

(3) (一维) 聚类

(一维) 聚类的方法包括两个步骤, 首先将连续属性的值用聚类算法

(如K-Means算法) 进行聚类, 然后再将聚类得到的簇进行处理, 合并到一

个簇的连续属性值并做同一标记。 聚类分析的离散化方法也需要用户指定簇

的个数, 从而决定产生的区间数。

##设置工作空间

#把“数据及程序” 文件夹复制到F盘下, 再用setwd设置工作空间

setwd("F: /数据及程序/chapter4/示例程序")

#读取数据文件, 提取标题行data=read.csv('./data/discretization_data.csv', header=T)

#等宽离散化

v1=ceiling(data[, 1] *10)

#等频离散化

names(data) ='f'#变量重命名

attach(data)

seq(0, length(f) , length(f) /6) #等频划分为6组

v=sort(f) #按大小排序作为离散化依据

v2=rep(0, 930) #定义新变量

for(i in 1: 930) v2[i] =ifelse(f[i] <=v[155] , 1,

ifelse(f[i] <=v[310] , 2,

ifelse(f[i] <=v[465] , 3,

ifelse(f[i] <=v[620] , 4,

ifelse(f[i] <=v[775] , 5, 6) ) ) ) )

detach(data)

#聚类离散化

result=kmeans(data, 6)

v3=result$cluster

#图示结果

plot(data[, 1] , v1, xlab='肝气郁结证型系数')

plot(data[, 1] , v2, xlab='肝气郁结证型系数')

plot(data[, 1] , v3, xlab='肝气郁结证型系数')

添加CDA认证专家【维克多阿涛】,微信号:【cdashijiazhuang】,提供数据分析指导及CDA考试秘籍。已助千人通过CDA数字化人才认证。欢迎交流,共同成长!
0.0000 0 3 关注作者 收藏

评论(0)


暂无数据

推荐课程

推荐帖子