1

我在尝试构建模型时被卡住了。我想按年份将数据集 freeny 分为 10 个子集。

data(freeny)

options(digits=2)
 year<-as.integer(rownames(freeny))
 freeny<-cbind(freeny,year)
 freeny = freeny[sample(1:nrow(freeny),length(1:nrow(freeny))),1:ncol(freeny)]
 freenyValues= freeny[,1:5]
 freenyTargets=decodeClassLabels(freeny[,6])
 freeny = splitForTrainingAndTest(freenyValues,freenyTargets,ratio=0.15)
 km<-kmeans(freeny$inputsTrain,10,iter.max = 100, nstart = 5)
 kclust=km$cluster
 library(tree)
 kclust=as.factor(kclust)
 mdp=cbind(freeny$inputsTrain,kclust)
 mdp<-data.frame(mdp)
 mdp.tr=tree(kclust~.,mdp)

但结果是树只有5个终端节点。它应该是10个终端节点,因为我用kmeans分成10个簇。怎么了?

4

1 回答 1

0

不,不应该。tree是一种算法,它试图拟合给定预测器和响应的树,并在以下情况下停止

终端节点太小或太少而无法拆分。

(手册页)。尝试调整minsize参数(请参阅?tree.control)。

minsize:允许的最小节点大小:加权数量。默认值为 10。

我认为以下内容将达到预期目的:

mdp.tr=tree(kclust~.,mdp, minsize= 1)
于 2013-07-10T08:44:21.680 回答