2016-03-31 41 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))) 
相关问题