判別分析--划分訓練集和測試集


數據集

我們選用kknn軟件包中的miete數據集進行算法演示,該數據集記錄了1994年慕尼黑的住房租金標准中的一些有趣變量,比如房子的面積、是否有浴室、是否有中央供暖、是否供應熱水等,這些都影響並決定着租金的高低。

1  數據概況

library(kknn)

data(miete)

head(miete)

 

dim(miete)

 

結果分析:該數據集共含有1082條樣本和17個變量

summary(miete)

 

各變量的含義:

 

 

 

按照表所示,我們在數據集中剔除含義重復的第1312這三個變量,取余下的14個變量進行處理。且其中我們選擇第15個變量——按區間划分的凈租金(nmkat)作為待判別變量,一是由於該變量在含義上受其他各變量的影響,為被解釋變量;二是由summary0)輸出結果可知,nmkat 共含有5個類等級別,標號未12345即代表租金額依次增加。其相應樣本量依次為219230210208215,即每一類的樣本量都為200多個,分布較為均勻。

2 數據預處理

下面我們將該數據集划分出訓練集和測試集為后續算法處理做准備。

為提高判別效果,我們考慮采用分層抽樣的方式,且由於前面所說的待判別變量nmkat 的樣本取值在5個等級中分布均勻,因此在分層抽樣過程中對這5個等級抽取等量樣本。具體實施程序如下:

install.packages("sampling")

library(sampling)

n<-round(2/3*nrow(miete)/5)    #按照訓練集占數據總量23的比例,計算每一等級中應抽取的樣本量

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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM