簡體   English   中英

如何在R中的數據集中使用PC(來自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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM