Как использовать ПК (полученные из 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))