caret包(Classification and Regression Training)是一系列函数的集合,它试图对创建预测模型的过程进行流程化。本系列将就数据预处理、特征选择、抽样、模型调参等进行介绍学习。
本文将就caret包中的数据预处理部分进行介绍学习。主要包括以下函数:model.matrix(),dummyVars(),nearZeroVar(),findCorrelation(),findLinearCombos(),preProcess(),classDist(),featurePlot()
创建虚拟变量
创建虚拟变量的两个主要函数:model.matrix , dummyVars
model.matrix()
model.matrix(object, data = environment(object), contrasts.arg = NULL, xlev = NULL, ...)
其实,主要参数为object,一个公式;data就是引用的数据咯
这里,式子中 ~后可以理解为要展开的数据(其实也可以有只有一个因子水平的数据,从而便于在展开数据的同时,cbind其他列的数据,从而得到接下来分析用到的数据),结果返回的是matrix类型
如上所示,有3个因子水平的a被展开成2列,其他一列被省掉,减少了多重共线性的困扰。但是,没搞明白,intercept是怎么得出来的?????
dummyVars()
dummyVars(formula, data, sep = ".", levelsOnly = FALSE, fullRank = FALSE, ...)
其用法跟model.matrix差不多,主要参数依旧是formula和data
不同的是
可以看出两点不同了:1. 需要调用predict函数才能显示矩阵 2. 是对所有level进行展开
此外,dummyVars还可以生成交互的展开