判别分析--数据预处理(划分训练集和测试集)

数据集

我们选用kknn软件包中的miete数据集进行算法演示,该数据集记录了1994年慕尼黑的住房租金标准中的一些有趣变量,比如房子的面积、是否有浴室、是否有*供暖、是否供应热水等,这些都影响并决定着租金的高低。

1  数据概况

library(kknn)

data(miete)

head(miete)

 判别分析--数据预处理(划分训练集和测试集)

dim(miete)

 判别分析--数据预处理(划分训练集和测试集)

结果分析:该数据集共含有1082条样本和17个变量。

summary(miete)

 判别分析--数据预处理(划分训练集和测试集)

各变量的含义:

 判别分析--数据预处理(划分训练集和测试集)

 

 判别分析--数据预处理(划分训练集和测试集)

 

 判别分析--数据预处理(划分训练集和测试集)

按照上表所示,我们在数据集中剔除含义重复的第1、3、12这三个变量,取余下的14个变量进行处理。且其中我们选择第15个变量——按区间划分的净租金(nmkat)作为待判别变量,一是由于该变量在含义上受其他各变量的影响,为被解释变量;二是由summary0)输出结果可知,nmkat 共含有5个类等级别,标号未1,2,3,4,5即代表租金额依次增加。其相应样本量依次为219、230、210、208、215,即每一类的样本量都为200多个,分布较为均匀。

2 数据预处理

下面我们将该数据集划分出训练集和测试集为后续算法处理做准备。

为提高判别效果,我们考虑采用分层抽样的方式,且由于前面所说的待判别变量nmkat 的样本取值在5个等级中分布均匀,因此在分层抽样过程中对这5个等级抽取等量样本。具体实施程序如下:

install.packages("sampling")

library(sampling)

n<-round(2/3*nrow(miete)/5)    #按照训练集占数据总量2、3的比例,计算每一等级中应抽取的样本量

n

 判别分析--数据预处理(划分训练集和测试集)

subtrain=strata (miete, stratanames="nmkat" ,size=rep(n, 5) , method="srswor")    #一nmkat变量的5个等级划分层次,进行分层抽样

head(subtrain)

#显示训练集的抽取情况,包括nmkat变量的取值,该样本在数据中的序号,被抽取到的概率,所在的层次

 判别分析--数据预处理(划分训练集和测试集)

miete<-miete[,c(-1,-3,-12)]

datatrain<-miete[subtrain$ID_unit,]

datatest<-miete[-subtrain$ID_unit,]dim(data_train)

dim(datatrain)    #训练集

 判别分析--数据预处理(划分训练集和测试集)

dim(data_test)     #测试集

 判别分析--数据预处理(划分训练集和测试集)

 head(datatest)

 判别分析--数据预处理(划分训练集和测试集)

上一篇:如何入门强化学习


下一篇:生成对抗网络(GAN)系列(一)