![](/img/trans.png)
[英]How to calculate the total contribution of a variable for 2 or more PCs in R (PCA)
[英]how to use the PCs (resulting from PCA) on my dataset in R?
我是R学习者。 我正在研究来自互联网的“人类活动识别”数据集。 它具有563个变量,最后一个变量是必须预测的类变量“活动”。
我正在尝试从R的CARET包中使用KNN算法。
我创建了另一个包含561个数字变量的数据集,但不包括最后2个-主题和活动。
我以此运行PCA,并决定使用前20台PC。
pca1 <- prcomp(human2, scale = TRUE)
我将这些PC的数据保存在另一个名为“ newdat”的数据集中
newdat <- pca1$x[ ,1:20]
现在我尝试运行以下代码:但是它给了我错误,因为此newdat没有我的类变量
trctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)
set.seed(3333)
knn_fit <- train(Activity ~., data = newdat, method = "knn",
trControl=trctrl,
preProcess = c("center", "scale"),
tuneLength = 10)
我试图从原始数据中提取最后一列“活动”,并使用带有“ newdat”的cbind()将其附加在knn-fit上(上面),但未附加。
有什么建议如何使用电脑?
下面是代码:
human1 <- read.csv("C:/NIIT/Term 2/Prog for Analytics II/human-activity-recognition-with-smartphones (1)/train1.csv", header = TRUE)
humant <- read.csv("C:/NIIT/Term 2/Prog for Analytics II/human-activity-recognition-with-smartphones (1)/test1.csv", header = TRUE)
#taking the predictor columns
human2 <- human1[ ,1:561]
pca1 <- prcomp(human2, scale = TRUE)
newdat <- pca1$x[ ,1:15]
newdat <- cbind(newdat, Activity = as.character(human1$Activity))
pca1 <- preProcess(human1[,1:561],
method=c("BoxCox", "center",
"scale", "pca"))
PC = predict(pca1, human1[,1:561])
trctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 3)
set.seed(3333)
knn_fit <- train(Activity ~., data = newdat, method = "knn",
trControl=trctrl,
preProcess = c("center", "scale"),
tuneLength = 10)
#applying knn_fit to test data
test_pred <- predict(knn_fit, newdata = testing)
test_pred
#checking the prediction
confusionMatrix(test_pred, testing$V1 )
我在以下部分遇到错误。 我附有错误:
> knn_fit <- train(Activity ~., data = newdat, method = "knn",
+ trControl=trctrl,
+ preProcess = c("center", "scale"),
+ tuneLength = 10)
Error: cannot allocate vector of size 1.3 Gb
您如何尝试绑定该列,请显示代码? 我认为您只是进入StringsAsFactors = TRUE
产生的困难。 以下行是否解决了您的问题:
#...
#newdat <- pca1$x[ ,1:20]
newdat <- cbind(newdat, Activity = as.character(human2$Activity))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.