2013-07-10 50 views
1

嘗試構建模型時出現卡住現象。 我想按年將數據集freeny分爲10個子集。如何在使用R進行聚類時正確繪製迴歸樹

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個終端nodes.It應爲10個終端節點,因爲我分成10簇通過k均值。怎麼了?

+0

謝謝您的回答。我刪除了參數nstart,但仍然只有迴歸樹只有幾個終端節點不全。 –

回答

0

不應該。 tree是試圖以適合樹特定的預測和響應的算法,並且如果

終端節點太小或太少被分裂停止。

(手冊頁)。嘗試調整minsize參數(請參閱?tree.control)。

minsize:允許的最小節點大小:加權數量。該 默認值是10

我認爲下面會做什麼打算:

mdp.tr=tree(kclust~.,mdp, minsize= 1) 
+0

感謝您的回答。我只是看手冊頁。我已經嘗試了你的建議,但仍然不是所有的終端節點,但只有幾個比mdp.tr =樹(kclust〜。,mdp) –

+0

好吧,kmeans是凝聚的,不會生成樹,所以樹不是固有的這種類型的聚類的屬性。因此,你不能保證找到一個完美合適的樹。 – January

+0

那麼如何使用R進行聚類分析來預測呢? –