京公网安备 11010802034615号
经营许可证编号:京B2-20210330
使用R并行方式对数值型数据离散化
数据的特征按照其取值可以分为连续型和离散型。离散数值属性在数据挖掘的过程中具有重要的作用。比如在信用卡评分模型中,当自变量很多时,并非所有字段对于目标字段来说都是有效的,因此通常的做法是通过计算woe值和iv值(类似于信息增益)来初步挑选通过对目标变量重要的字段,然后建模逻辑回归模型。而这当中就需要对数值型数据离散化。
数值型数据离散化通常分为有监督离散化和无监督离散化。考虑到数据建模通常是建立目标字段和其影响因素之间的关系的量化,因此会选择有监督离散化。
R语言中用于数值型数据离散化的包discretization。安装和加载如下:
>install.packages("discretization") >library(discretization)
以R自带数据集iris为例,以”Species” 为目标字段,对”Sepal.Length”、”Sepal.Width”、”Petal.Length” 、”Petal.Width” 四个数值型属性离散化。
>lisan_result <- mdlp(iris)
>class(lisan_result)
[1] “list”
>names(lisan_result)
[1] “cutp” “Disc.data”使用mdlp()方法对iris离散化,该方法默认数据框最后一列最后为目标字段。返回结果为列表。”cutp”为各列的分割点向量。”Disc.data”为离散化后的数据框。
该方法对于较小的样本量和维度时,程序运行时间还可以接受。但随着数据量的增大,数据维度的增加,程序运行时间会越来越长。因此考虑采用并行的方式对数据进行离散化。介绍R用于离散化的包parallel。
>install.packages(“parallel”)
>library(parallel)
>cores <- detectCores() ##查看本机虚拟核心数
> cores
[1] 4现在考虑以并行的方式实现离散化方法。考虑设计思路如下:
1.将字段10个为一组分别与目标字段组合成数据框,(不足10个时以实际数量字段与目标字段组合)存放在一个列表中。列表的元素即离散字段与目标字段构成的数据框。
2.启动M个附属进程,并初始化。M<=本机虚拟核心数。使用parLapply()作用于步骤1中建立的列表数据。此时既有M个附属进程对数据进行离散化。
3.将步骤2中的离散化结果合并。
4.将上述步骤封装成函数。整理后使得返回结果与mdlp()函数一致。这样方便调用。
将上述设计思路写成R代码,如下:输入离散数据、使用核心数,返回结果与使用mdlp()函数相同
parallel_lisan <- function(lisan_data,cores_num){
library(parallel)
library(discretization
res <- list()
lisan_data_v <- list()
cut_point <- list()
Disc.data <- data.frame(c(rep(NA,nrow(lisan_data))))name_num = ncol(lisan_data)-1 ##将原始数据分割成多列,先考虑每组10列。不足的单独分为一组。
group_num = floor(name_num/10)
last_group_num = name_num%%10
if( name_num > 10{ ##当原始数据列数多余10列
for(i in 1:group_num){
lw_flag <- lisan_data[,ncol(lisan_data)]
lisan_data_v[[i]] <- cbind(lisan_data[,(10*i-9):> (10*i)],lw_flag)
}
lisan_data_v[[group_num+1]] <- lisan_data[, (10*group_num+1):ncol(lisan_data)]
}else{
lisan_data_v[[group_num+1]] <- lisan_data[,(10*group_num+1):ncol(lisan_data)]
}
cl <- makeCluster(cores_num) ##初始化核心
results <- parLapply(cl,lisan_data_v,mdlp) ##对列表数据使用mdlp函数并行离散化
for(i in 1:length(results)){
for(j in 1:length(results[[i]][[1]])){
cut_point[[(i-1)*10+j]] <- results[[i]][[1]][[j]]
}
temp <- as.data.frame(results[[i]][[2]])
Disc.data <- cbind(Disc.data,temp[,1:(ncol(temp)-1)]) ##合并离散数据结果
}
Disc.data <- Disc.data[,2:ncol(Disc.data)]
Disc.data$lw_flag <- lisan_data[,ncol(lisan_data)]
names(Disc.data) <- names(lisan_data)
stopCluster(cl)
res[[“cutp”]] <- cut_point
res[[“Disc.data”]] <- Disc.data
return(res)
}
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
一、需求从哪来 做 Excel 报表时,"从一个透视表取数据"这个需求通常有三种来源: 汇总页引用:明细透视表在另一个 sheet,汇总 ...
2026-11-11一、透视表的价值在哪 一句话概括:数据透视表把"写公式汇总"变成了"拖字段看结果"。 传统做法要写 SUMIFS、COUNTIFS,改一个维 ...
2026-11-11核心资源推荐 CDA教材(2025):https://edu.cda.cn/goods/show/3151CDA模拟题(2025):https://edu.cda.cn/goods/show/2845CD ...
2026-11-11核心资源推荐 CDA教材(2025):https://edu.cda.cn/goods/show/3151CDA模拟题(2025):https://edu.cda.cn/goods/show/2845CD ...
2026-11-11一、回归分析到底在解决什么问题 很多人学回归分析,是从公式开始的:最小二乘法、残差平方和、R²、t 检验。公式记住了,但一到 ...
2026-11-10一、等级聚类法是什么 等级聚类法(Hierarchical Clustering),中文也叫系统聚类法、层次聚类法,是聚类分析里最经典的一类方法 ...
2026-11-10考试范围 PART 1 大数据基础理论 占比(8% ) a. 大数据分析基础(1%) b. Python 基础(5%) c. Linux & Ubuntu 操作系统基 ...
2026-11-10一、业务背景 在后台列表、管理系统、报表页面的分页需求里,前端通常需要两份数据:当前页的分页记录、符合筛选条件的数据总条 ...
2026-11-09一、需求看起来简单,实际坑不少 "把文本里所有中括号 [] 中间的内容提取出来"——这是文本清洗里最常见的需求之一。日志里的 [I ...
2026-11-09大数据分析师证书考什么 考试范围 PART 1 大数据基础理论 占比(8% ) a. 大数据分析基础(1%) b. Python 基础(5%) c. Li ...
2026-11-09CDA数据分析师 出品 作者:李诗怡 一、数据处理概述 定义: 在正式开展数据分析之前,对原始采集的数据进行整理、修正、加工和精 ...
2026-11-06一、为什么数据要先标准化 拿到一份数据,各列的量纲往往完全不同:年龄单位是"岁"(约 20~60),收入单位是"元"(几千到几万) ...
2026-11-06一、为什么 Python 成了统计分析的主流工具 十年前做统计分析,主流选择是 SPSS、SAS、Stata。现在越来越多的研究者、分析师转向 ...
2026-11-06核心资源推荐 CDA教材(2025):https://edu.cda.cn/goods/show/3151CDA模拟题(2025):https://edu.cda.cn/goods/show/2845CD ...
2026-11-06“大学生必备证书有哪些”最容易被答成一张越长越好的清单。但校招筛选的真实逻辑是:证书要对应你投的岗位任务,并且在校期间确 ...
2026-11-05大学期间能报的证书,先别急着看“含金量榜单”。更实用的第一步是问:我现在这个身份、这个学历,符合报考条件吗? 很多证书宣 ...
2026-11-05大学期间能考的证书很多,但真正需要先回答的是两个问题:当前有没有报考资格,以及这张证书对应什么岗位任务。 前者决定你能不 ...
2026-11-05先把结论说清楚:真正“只有在校大学生能考、毕业就彻底没资格”的证书数量不多,主要集中在语言类考试的部分专项、面向高校学生 ...
2026-11-05上班族问“考什么证书有用”,真正要解决的不是找一张“最值钱”的证,而是判断哪张证能嵌进你现有的岗位任务。同样一张证书,做 ...
2026-11-05职称证书不是统一的考试项目。同样“考职称”,经济、会计、统计、审计、软考走全国统一考试,工程、教师、卫生等系列多数走评审 ...
2026-11-05