juancda4
juancda4

Reputation: 333

Obtaining consistent classifications when regenerating an rpart() model with predict() in R

This is been a recurrent problem for me in the past few days.

I've the following dataset that I'm using to test the accuracy of a rpart() model:

> head(resp41366_observed)
   ACTIVITY_X ACTIVITY_Y       observed 
1:         29         19 Feeding/Moving
2:         34         30 Moving/Feeding
3:         51         47 Moving/Feeding
4:         78         38 Moving/Feeding
5:         18         17 Feeding/Moving
6:          4          0 Feeding/Moving

The model is:

xtree <- rpart(classification ~ ACTIVITY_X + ACTIVITY_Y , data = train, method = "class", parms = list(split = "information"))

To test model's accuracy, I'm using resp41366 to predict the classes seen in resp41366$observed and then comparing the classes predicted by the model with the resp41366$observed classes.

The predictor dataset I'm using is pred41361 which has the exact same format as resp41366. This is the code:

#Running the model
> resp41366_pred413561 = predict(xtree,resp41366,type="class")
> resp41366_pred413561<-data.table(resp41366_pred413561)
> names(resp41366_pred413561)="predicted"
#Merging the observed classes with the predicted classes by the model
> test_accuracy<-cbind(resp41366_observed,resp41366_pred413561)
> head(test_accuracy)
         observed      predicted
1: Feeding/Moving Moving/Feeding
2: Moving/Feeding Moving/Feeding
3: Moving/Feeding Moving/Feeding
4: Moving/Feeding Moving/Feeding
5: Feeding/Moving Feeding/Moving
6: Feeding/Moving Feeding/Moving
#Calculating accuracy
> obs<-as.factor(test_accuracy$observed)
> pred<-as.factor(test_accuracy$predicted)
> mean(obs == pred)
[1] 0.8208556

This is the perfect scenario were the predicted classes match the observed classes fairly well. However, if I regenerate test_accuracy, it might happen that I get (as an example):

#Calculating accuracy
> obs<-as.factor(test_accuracy$observed)
> pred<-as.factor(test_accuracy$predicted)
> mean(obs == pred)
[1] 0.02345

When this happens, I can bring the accuracy back to 0.8208556 by shuffling the predicted classes as follows, to make them compatible with the observed classes again:

1) replace Feeding/Moving for Standing

2) replace Moving/Feeding for Feeding/Moving

3) replace Standing for Moving/Feeding

My question: Is there a way to predefine the classes so that I'm always getting a consistent classification without the need of re-arranging the classes post-hoc? Am I missing something when implementing predict() maybe?

I hope somebody can help me solve this issue, as I'll need to use this model for datasets which observed classes are unknown and I need to have consistent classifications every time the data is regenerated.

Any input is appreciated!


Code:

#80:20 data split for cross-validation
trainIndex  <- sample(1:nrow(tableresults), 0.8 * nrow(tableresults))
train <- tableresults[trainIndex,]
test <- tableresults[-trainIndex,]
#Model implementation
xtree <- rpart(classification ~ ACTIVITY_X + ACTIVITY_Y , data = train, method = "class", parms = list(split = "information"))

Data details:

> dput(tableresults)
structure(list(ACTIVITY_X = c(40L, 60L, 62L, 60L, 66L, 60L, 57L, 
54L, 52L, 93L, 80L, 14L, 61L, 51L, 40L, 20L, 21L, 5L, 53L, 48L, 
73L, 73L, 21L, 29L, 63L, 59L, 57L, 51L, 53L, 67L, 72L, 74L, 70L, 
60L, 74L, 85L, 77L, 68L, 58L, 80L, 34L, 45L, 34L, 60L, 75L, 62L, 
66L, 51L, 53L, 48L, 62L, 62L, 57L, 5L, 1L, 12L, 23L, 5L, 4L, 
0L, 13L, 45L, 44L, 31L, 68L, 88L, 43L, 70L, 18L, 83L, 71L, 67L, 
75L, 74L, 49L, 90L, 44L, 64L, 57L, 22L, 29L, 52L, 37L, 32L, 120L, 
45L, 22L, 54L, 30L, 9L, 27L, 14L, 3L, 29L, 12L, 61L, 60L, 29L, 
15L, 7L, 6L, 0L, 2L, 0L, 4L, 1L, 7L, 0L, 0L, 0L, 0L, 0L, 1L, 
23L, 49L, 46L, 8L, 31L, 45L, 60L, 37L, 61L, 52L, 51L, 38L, 86L, 
60L, 41L, 43L, 40L, 42L, 42L, 48L, 64L, 71L, 59L, 0L, 27L, 12L, 
3L, 0L, 0L, 8L, 21L, 6L, 2L, 7L, 4L, 3L, 3L, 46L, 46L, 59L, 53L, 
37L, 44L, 39L, 49L, 37L, 47L, 17L, 36L, 32L, 33L, 26L, 12L, 8L, 
31L, 35L, 27L, 27L, 24L, 17L, 35L, 39L, 28L, 54L, 5L, 0L, 0L, 
0L, 0L, 17L, 22L, 25L, 12L, 0L, 5L, 41L, 51L, 66L, 39L, 32L, 
53L, 43L, 40L, 44L, 45L, 48L, 51L, 41L, 45L, 39L, 46L, 59L, 31L, 
5L, 24L, 18L, 5L, 15L, 13L, 0L, 26L, 0L), ACTIVITY_Y = c(47L, 
74L, 63L, 56L, 61L, 53L, 40L, 41L, 49L, 32L, 54L, 13L, 99L, 130L, 
38L, 14L, 6L, 5L, 94L, 96L, 38L, 43L, 29L, 47L, 66L, 47L, 38L, 
31L, 36L, 35L, 38L, 72L, 54L, 44L, 45L, 51L, 80L, 48L, 39L, 85L, 
42L, 39L, 37L, 75L, 36L, 45L, 32L, 35L, 41L, 26L, 99L, 163L, 
124L, 0L, 0L, 24L, 37L, 0L, 6L, 0L, 29L, 29L, 26L, 27L, 54L, 
147L, 82L, 98L, 12L, 83L, 97L, 104L, 128L, 81L, 42L, 102L, 60L, 
79L, 58L, 15L, 14L, 75L, 75L, 40L, 130L, 40L, 13L, 54L, 42L, 
7L, 10L, 3L, 0L, 15L, 8L, 75L, 55L, 26L, 18L, 1L, 13L, 0L, 0L, 
0L, 1L, 0L, 4L, 0L, 0L, 0L, 0L, 0L, 0L, 17L, 45L, 38L, 10L, 31L, 
52L, 36L, 65L, 97L, 45L, 59L, 49L, 92L, 51L, 34L, 21L, 20L, 29L, 
28L, 22L, 32L, 30L, 86L, 0L, 15L, 7L, 4L, 0L, 0L, 0L, 11L, 3L, 
0L, 1L, 3L, 1L, 0L, 72L, 62L, 98L, 55L, 26L, 39L, 28L, 81L, 20L, 
52L, 12L, 48L, 24L, 40L, 30L, 5L, 6L, 40L, 37L, 33L, 26L, 17L, 
14L, 39L, 27L, 28L, 67L, 0L, 0L, 0L, 0L, 0L, 10L, 12L, 14L, 7L, 
0L, 2L, 39L, 67L, 74L, 28L, 23L, 57L, 34L, 36L, 36L, 37L, 46L, 
43L, 73L, 65L, 31L, 64L, 128L, 17L, 3L, 12L, 17L, 0L, 9L, 7L, 
0L, 17L, 0L), classification = c("Moving/Feeding", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Standing", "Feeding/Moving", 
"Standing", "Standing", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Standing", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Standing", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Standing", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Standing", "Standing", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Standing", 
"Standing", "Standing", "Standing", "Feeding/Moving", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Standing", "Feeding/Moving", 
"Feeding/Moving", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Standing", 
"Standing", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Moving/Feeding", 
"Feeding/Moving", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Standing", "Moving/Feeding", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Standing", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving")), class = "data.frame", row.names = c(NA, 
-215L))

Here's resp41366_observed. The resp41366 dataset used above is simply resp41366_observed without resp41366$observed:

> dput(resp41366_observed)
structure(list(ACTIVITY_X = c(29L, 34L, 51L, 78L, 18L, 4L, 27L, 
19L, 23L, 21L, 19L, 52L, 71L, 141L, 103L, 59L, 85L, 129L, 86L, 
129L, 82L, 67L, 79L, 49L, 51L, 32L, 27L, 48L, 10L, 2L, 18L, 29L, 
39L, 70L, 64L, 88L, 90L, 94L, 69L, 91L, 80L, 81L, 92L, 109L, 
96L, 84L, 67L, 89L, 85L, 67L, 79L, 68L, 88L, 72L, 67L, 65L, 71L, 
79L, 63L, 64L, 36L, 56L, 61L, 80L, 49L, 45L, 65L, 59L, 58L, 62L, 
49L, 58L, 68L, 52L, 78L, 51L, 73L, 75L, 80L, 75L, 89L, 63L, 33L, 
41L, 44L, 34L, 43L, 9L, 11L, 21L, 30L, 34L, 41L, 30L, 24L, 31L, 
65L, 52L, 21L, 35L, 39L, 35L, 27L, 32L, 38L, 38L, 56L, 65L, 81L, 
28L, 38L, 10L, 32L, 45L, 26L, 8L, 0L, 19L, 56L, 7L, 0L, 23L, 
13L, 1L, 2L, 29L, 15L, 15L, 1L, 33L, 3L, 45L, 143L, 46L, 78L, 
76L, 81L, 44L, 89L, 15L, 45L, 52L, 49L, 64L, 55L, 52L, 72L, 68L, 
95L, 66L, 74L, 103L, 49L, 26L, 7L, 29L, 25L, 31L, 7L, 13L, 12L, 
3L, 22L, 40L, 40L, 47L, 9L, 29L, 9L, 11L, 14L, 4L, 58L, 53L, 
60L, 30L, 40L, 42L, 41L, 48L, 40L, 31L, 51L, 29L, 33L, 76L, 38L, 
35L, 27L, 46L, 60L, 54L, 47L, 55L, 35L, 51L, 64L, 63L, 32L, 43L, 
52L, 47L, 41L, 64L, 54L, 56L, 66L, 64L, 33L, 26L, 28L, 33L, 45L, 
53L, 46L, 37L, 39L, 52L, 31L, 1L, 0L, 56L, 19L, 17L, 21L, 33L, 
68L, 61L, 78L, 31L, 0L, 11L, 63L, 62L, 43L, 42L, 154L, 4L, 187L, 
43L, 56L, 49L, 62L, 46L, 71L, 56L, 46L, 66L, 14L, 0L, 0L, 7L, 
0L, 0L, 0L, 17L, 39L, 23L, 0L, 0L, 0L, 4L, 3L, 9L, 8L, 14L, 7L, 
17L, 2L, 6L, 0L, 67L, 49L, 0L, 7L, 2L, 0L, 3L, 0L, 0L, 11L, 0L, 
2L, 4L, 10L, 4L, 3L, 55L, 41L, 34L, 43L, 21L, 0L, 6L, 0L, 0L, 
0L, 0L, 0L, 0L, 0L, 4L, 81L, 63L, 44L, 30L, 0L, 0L, 0L, 0L, 0L, 
0L, 0L, 0L, 27L, 41L, 38L, 26L, 30L, 44L, 57L, 69L, 31L, 54L, 
32L, 60L, 37L, 15L, 55L, 49L, 52L, 59L, 49L, 9L, 8L, 12L, 11L, 
14L, 20L, 54L, 43L, 64L, 53L, 61L, 108L, 39L, 63L, 54L, 56L, 
60L, 46L, 64L, 15L, 3L, 8L, 43L, 90L, 43L, 64L, 38L, 13L, 12L, 
46L, 24L, 1L, 30L, 9L, 58L, 105L, 2L, 4L, 2L, 4L, 8L), ACTIVITY_Y = c(19L, 
30L, 47L, 38L, 17L, 0L, 20L, 11L, 11L, 8L, 13L, 46L, 105L, 133L, 
131L, 64L, 76L, 94L, 58L, 69L, 47L, 57L, 155L, 49L, 72L, 43L, 
38L, 53L, 4L, 1L, 12L, 22L, 43L, 91L, 72L, 80L, 74L, 89L, 93L, 
115L, 79L, 89L, 85L, 103L, 87L, 84L, 71L, 98L, 83L, 81L, 83L, 
74L, 85L, 83L, 58L, 86L, 63L, 55L, 64L, 54L, 34L, 46L, 88L, 71L, 
69L, 51L, 58L, 53L, 53L, 67L, 57L, 70L, 71L, 77L, 59L, 74L, 58L, 
61L, 93L, 77L, 72L, 73L, 13L, 14L, 24L, 25L, 29L, 4L, 5L, 3L, 
13L, 14L, 16L, 10L, 7L, 13L, 54L, 38L, 17L, 19L, 20L, 15L, 10L, 
8L, 19L, 15L, 26L, 75L, 62L, 31L, 34L, 9L, 31L, 59L, 27L, 0L, 
0L, 3L, 59L, 5L, 0L, 14L, 6L, 0L, 0L, 28L, 7L, 14L, 0L, 24L, 
6L, 34L, 168L, 68L, 115L, 103L, 67L, 35L, 122L, 39L, 42L, 42L, 
43L, 47L, 44L, 39L, 77L, 43L, 112L, 68L, 59L, 188L, 127L, 25L, 
3L, 15L, 15L, 25L, 0L, 6L, 3L, 0L, 30L, 30L, 21L, 38L, 6L, 20L, 
17L, 7L, 8L, 5L, 61L, 87L, 44L, 57L, 43L, 73L, 87L, 46L, 97L, 
42L, 60L, 29L, 34L, 75L, 43L, 83L, 42L, 86L, 105L, 78L, 72L, 
103L, 51L, 88L, 74L, 66L, 42L, 36L, 45L, 77L, 60L, 69L, 49L, 
61L, 53L, 44L, 71L, 23L, 28L, 21L, 24L, 61L, 39L, 28L, 29L, 53L, 
39L, 0L, 2L, 29L, 25L, 23L, 16L, 43L, 70L, 107L, 149L, 62L, 1L, 
5L, 63L, 61L, 32L, 159L, 209L, 1L, 255L, 68L, 68L, 90L, 94L, 
64L, 92L, 97L, 75L, 77L, 15L, 0L, 0L, 12L, 0L, 0L, 0L, 33L, 56L, 
37L, 0L, 0L, 0L, 1L, 0L, 3L, 6L, 4L, 0L, 11L, 0L, 1L, 0L, 41L, 
61L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 3L, 0L, 5L, 
54L, 51L, 26L, 30L, 31L, 0L, 0L, 0L, 5L, 0L, 0L, 0L, 0L, 0L, 
16L, 88L, 55L, 42L, 24L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 15L, 
30L, 29L, 21L, 26L, 43L, 56L, 40L, 22L, 6L, 19L, 16L, 15L, 13L, 
46L, 59L, 88L, 41L, 35L, 9L, 1L, 2L, 5L, 6L, 4L, 40L, 24L, 55L, 
41L, 56L, 210L, 26L, 127L, 67L, 65L, 73L, 41L, 47L, 8L, 1L, 10L, 
23L, 76L, 36L, 79L, 15L, 0L, 2L, 46L, 39L, 4L, 23L, 2L, 48L, 
141L, 1L, 0L, 1L, 1L, 4L), observed = c("Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Moving/Feeding", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Moving/Feeding", "Standing", 
"Standing", "Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Feeding/Moving", "Moving/Feeding", "Standing", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Feeding/Moving", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Standing", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Moving/Feeding", "Standing", "Standing", 
"Standing", "Standing", "Standing", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Standing", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Standing", "Standing", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Moving/Feeding", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Standing", "Standing", "Standing", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Standing", "Feeding/Moving", 
"Standing", "Moving/Feeding", "Moving/Feeding", "Standing", "Standing", 
"Moving/Feeding", "Standing", "Standing", "Moving/Feeding", "Standing", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Feeding/Moving", "Moving/Feeding", 
"Feeding/Moving", "Moving/Feeding", "Feeding/Moving", "Feeding/Moving", 
"Moving/Feeding", "Moving/Feeding", "Standing", "Moving/Feeding", 
"Moving/Feeding", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Moving/Feeding", 
"Standing", "Moving/Feeding", "Standing", "Moving/Feeding", "Moving/Feeding", 
"Moving/Feeding", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Standing", 
"Moving/Feeding", "Standing", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving", "Moving/Feeding", "Moving/Feeding", "Feeding/Moving", 
"Feeding/Moving", "Feeding/Moving", "Moving/Feeding", "Standing", 
"Feeding/Moving", "Feeding/Moving", "Feeding/Moving", "Feeding/Moving", 
"Feeding/Moving")), row.names = c(NA, -374L), class = c("data.table", 
"data.frame"), .internal.selfref = <pointer: 0x0000000002541ef0>)

Upvotes: 0

Views: 28

Answers (1)

Simon M&#252;ller
Simon M&#252;ller

Reputation: 368

  1. I would suggest you to use frameworks for your classification or ML tasks, e.g. MLR or CARET.

  2. Maybe you prepare your data such that train and test are consistent before pushing them into the pipeline and let the framework let do the split (resmapling).

Upvotes: 1

Related Questions