conjunto de entrenamiento

trainSample <- cbind(data[1:980,1], data[1:980,2]) cl <-
factor(c(data[1:980,3]))

conjunto de pruebas

testSample <- data(data[981:1485,1], data[981:1485,2])
cl.test <- clknn

predicción

k <- knn(trainSample, testSample, cl, k = 5)

salida

< k
[1] 2 2 1 1 1 1 2 1 2 1 1 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 1 2 2 1 1 2 2 1 1 2 2 2 2 1 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2
[60] 2 2 2 2 1 2 2 2 2 1 2 2 1 2 2 2 1 1 2 1 2 2 1 1 1 2 1 2 2 2 1 2 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 2 2 2 2
[119] 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 1 1 1 1 2 2 2 2 2 2 2 2 1 2 1 2 2 2 2 2 2 1 2 2 1 2 1 2 2 2 2
[178] 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 1 1 1 1 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 1
[237] 2 2 2 2 2 1 2 2 1 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 1 2 2 1 2 2 2 2 1 2 1 2 2 2 2 1 1 2 1 2 2 2 2 1 2 2 2
[296] 2 2 2 1 2 1 2 1 1 1 2 1 2 2 1 1 2 2 1 2 1 2 2 1 2 2 2 1 2 2 2 2 2 1 2 2 2 1 2 2 2 1 2 2 2 2 2 2 2 1 2 1 1 2 2 2 1 1 2
[355] 1 2 1 2 1 2 1 2 2 2 2 2 2 1 1 1 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 1 2 2 2 2 2 1 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2
[414] 2 2 1 2 2 2 2 2 2 2 2 2 1 1 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
[473] 2 2 2 2 2 1 1 2 2 2 2 2 1 2 2 1 1 2 2 1 2 2 1 2 1 2 2 1 2 2 2 2 2
Levels: 1 2

Quiero «c» y «no-c» (como en mi original de datos.csv), en lugar de 1 y 2 (im también no estoy seguro del número que se supone que representan)

Alguien puede ayudar ?

OriginalEl autor Beginner questions | 2015-04-17

4 Comentarios

  1. 23

    Es muy fácil cambiar los niveles de los factores, y también para no confundirse acerca de cual es cual:

    Datos de ejemplo:

    > a <- factor(rep(c(1,2,1),50))
    > a
    [1] 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2
    [75] 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1 2 1 1
    [149] 2 1
    Levels: 1 2
    #this will help later as a verification
    #this counts the instances for 1 and 2
    > table(a)
    a
    1   2 
    100  50 

    Así como usted puede ver por encima de la orden de los niveles es 1 primera y 2 segundo. Al cambiar los niveles (por debajo) de la orden sigue siendo el mismo:

    #the assignment function levels can be used to change the levels
    #the order will remain the same i.e. 'c' for '1' and 'not-c' for '2'
    levels(a) <- c('c', 'not-c')
    > a
    [1] c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c    
    [25] c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c    
    [49] c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c    
    [73] c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c    
    [97] c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c    
    [121] c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c     c     not-c c    
    [145] c     not-c c     c     not-c c    
    Levels: c not-c

    Y este es el de la verificación:

    > table(a)
    a
    c not-c 
    100    50 
    impresionante, gracias de nuevo LyzandeR. 🙂
    respondió una pregunta para mí acerca de ensemble, estoy luchando para encontrar otro clasificador de usar, y también ¿cómo puedo factor de los resultados de cada clasificador es decir, ¿cómo este factor «h_results$TrueLabel==nb_results$Predicción» o el clasificador de hacer por mí? lo siento acerca de esto.
    No hay problema, dispuesto a ayudar :). Para el combinado clasificador te refieres? Como ya he dicho puede utilizar cada vez que quieras. No sé por qué te gustaría factor h_results$TrueLabel==nb_results$Prediction (tal vez el uso de table más tarde?) pero suponiendo que sus longitudes son iguales sólo ajustar dentro de un factor función y eso es todo.
    Yo sugeriría que si tu pregunta es más profunda y necesitas más información acerca de algo para hacer una nueva pregunta (la adición de un reproducible de ejemplo y quería salida) y la gente te ayuda. También puede enviarme el enlace aquí para intentar responder a mí mismo, si quieres. (Esto lo digo porque es difícil de tratar y resolver un problema a través de charlas en los comentarios)
    gracias por sus respuestas, sí que el código que me da un cierto resultado falso para cada muestra de datos por ejemplo, algo como verdadero verdadero VERDADERO VERDADERO FALSO, etc, etc en cuanto a si es correcta o no necesito factor que y los otros clasificadores así y, a continuación, combinar todos juntos en una mesa y clasificar la tabla con el verdadero sello también allí? (Espero que lo que he dicho sentido) jaja

    OriginalEl autor LyzandeR

  2. 5

    Subíndice de asignación también funciona. Por ejemplo, aquí es un factor de:

    > a <- factor(sample(letters[1:5],100,replace=T))
    > a
    [1] a d d d d a d d a b a b e a c d a c a a b e e d a e d e e a a c a a a b a
    [38] b b a a e b d b c a a a b e b c e d d b b c c a b a d c b c c d e b d e d
    [75] a a a b e e c b c b c c d d e e d a e e e b c e b e
    Levels: a b c d e

    Ahora, vamos a dar un par de esos niveles, los nuevos nombres:

    > levels(a)[c(2,4)] <- c('y','z')
    > a
    [1] a z z z z a z z a y a y e a c z a c a a y e e z a e z e e a a c a a a y a
    [38] y y a a e y z y c a a a y e y c e z z y y c c a y a z c y c c z e y z e z
    [75] a a a y e e c y c y c c z z e e z a e e e y c e y e
    Levels: a y c z e

    OriginalEl autor cbare

  3. 1

    Puede hacer algo como esto:

    x<-factor(c(1,1,2,3,1), labels=c("group1","group2","group3")) 
    > x 
    [1] group1 group1 group2 group3 group1 
    Levels: group1 group2 group3

    O como este:

    train <- read.csv("train.csv", header=TRUE)[1:1000, ]
    labels <- train[,1]
    Este tipo de obras pero, ¿cómo hago para saber cual es que desde mi conjunto de datos original? Puedo intercambiar los nombres de ronda y el resultado será la inversa, pero la precisión restantes el mismo, por lo que obviamente no es cierto? Gracias
    No puedo conseguir su segunda parte a trabajar, yo realmente no lo entiendo, he probado este newPred <- knn(tren, traintest, etiquetas, k = 5) recibir este mensaje de error Error en knn(tren, traintest, etiquetas, k = 5) : NA/NaN/Inf en el extranjero llamada de función (arg 6)

    OriginalEl autor Chris

  4. 1

    uso forcats paquete.

    a <- factor(rep(c(1,2,1),50))
    fct_collapse(a,c = c("1"),`not-c` = c("2"))
    De niza. Usted no necesita la c()s para un elemento: fct_collapse(a, c = "1", `not-c` = "2")

    OriginalEl autor dondapati

Dejar respuesta

Please enter your comment!
Please enter your name here