Как использовать ПК (полученные из PCA) в моем наборе данных в R?

Я учусь на R. Я работаю над набором данных "Распознавание человеческой деятельности" из Интернета. Он имеет 563 переменных, последняя из которых является переменной класса "Activity", которая должна быть предсказана.

Я пытаюсь использовать алгоритм KNN здесь из пакета CARET R.

Я создал еще один набор данных с 561 числовыми переменными, исключая последние 2 - тему и действие.

Я запустил PCA и решил, что буду использовать 20 лучших компьютеров.

pca1 <- prcomp(human2, scale = TRUE)

Я сохранил данные этих компьютеров в другом наборе данных под названием "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)

Я попытался извлечь последний столбец 'активность' из необработанных данных и добавить его с помощью cbind() с 'newdat', чтобы использовать его в 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

1 ответ

Решение

Как вы пытались привязать столбец, не могли бы вы показать код? Я думаю, что вы просто вступили в трудности, вызванные StringsAsFactors = TRUE, Решает ли ваша проблема следующую строку:

#...
#newdat <- pca1$x[ ,1:20]    
newdat <- cbind(newdat, Activity = as.character(human2$Activity))
Другие вопросы по тегам