2016-03-31 74 views
0

使用train()和preProcess()我想用前7個主成分作爲預測因子,使用PCA構建預測模型。R - 如何設置特定數量的PCA組件來訓練預測模型

下面的作品,但我不能指定PC數量:

predModel2 <- train(diagnosis~., data=training2, method = "glm", preProcess = "pca") 

我已經試過這指定PC的數量,但我不知道如何將其納入火車():

predModel2 <- train(diagnosis~., data=training2, method = "glm", preProcess = "pca", pcaComp=7) 
Error in train.default(x, y, weights = w, ...) : Stopping 

UPDATE: 它本身

training_pre<-preProcess(training[,ILcols],method = c("center", "scale", "pca"),pcaComp= 7) 

我已經嘗試使用EMS我解決這個問題,通過使用預測()第一名:

training2_pca<-predict(training_pre,training2_pca) 
train(diagnosis~., data=training2_pca, method = "glm") 

回答

1

所有預處理應該在訓練或摺疊來完成,在這種情況下,重新取樣。這可以防止「數據泄漏」,所以上述第一種方法應該是首選的,參見例如。 this question

pcaComp參數進入trainControl()。以虹膜數據,KNN和前兩個主要部件爲例:

predModel2 <- train(Species~., data=iris, method = "knn", preProcess = "pca", 
        trControl = trainControl(preProcOptions = list(pcaComp = 2))) 
相關問題