2016-07-21 4 views
0

에 분류 deepnet 사용 방법 :내가 예에서 코드를 사용하는 경우 R

library(deepnet) 
Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
x <- matrix(c(Var1, Var2), nrow = 100, ncol = 2) 
y <- c(rep(1, 50), rep(0, 50)) 
nn <- dbn.dnn.train(x, y, hidden = c(5)) 

그것을 작동합니다. 내가이 코드를 사용할 때 :

Error in batch_y - nn$post[[i]] : non-numeric argument to binary operator

가 어떻게 분류 문제에 대한 deepnet 패키지를 사용할 수 있습니다

Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
x <- matrix(c(Var1, Var2), nrow = 100, ncol = 2) 
**y <- c(rep("1", 50), rep("0", 50))** 
nn <- dbn.dnn.train(x, y, hidden = c(5)) 

을 난 오류가 발생?

답변

1
y1 <- c(rep("1", 50), rep("0", 50)) 

귀하가 패키지에서 허용되지 않는 문자 벡터로 연결됩니다. 그래서 당신은 오류를 얻을

class(y) 
#[1] "character" 

y <- c(rep(1, 50), rep(0, 50)) 
class(y) 
#[1] "numeric" 

을 다음과 같이 y는 숫자이어야합니다 바로 당신이 당신의 Y 내부를 볼 경우, 당신은 당신이 찾을 수 1 분류에 대한 이진 값 0 당신이이 설명서에 언급 된 바와 같이 훈련 할 경우

> table(y) 
#y 
# 0 1 
#50 50 

, 당신은 훈련과 테스트가

을 설정 예측하기 위해 다음을 수행 할 수 있습니다 17,451,515,
Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
x <- matrix(c(Var1, Var2), nrow = 100, ncol = 2) 
y <- c(rep(1, 50), rep(0, 50)) 

지금 STR하여 x와 y를 보면 단순히 STR 쓰기 (x)를 당신은 그들이 있는지 확인하기 위해 (숫자 것을 볼 수 있습니다 또는 STR (Y), 당신은 그 (것)들을 확인하실 수 있습니다 클래스 (x)와 클래스 (y). 당신은 예측하기 설정 시험이있는 경우

당신의 X와 Y를 가진 후, 다음 모델을 구축 할 수

dnn <- dbn.dnn.train(x, y, hidden = c(5, 5)) 

, 당신은 수동

에서 언급 한 바와 같이, 예를 들어 사용하여 예측할 수있다
test_Var1 <- c(rnorm(50, 1, 0.5), rnorm(50, -0.6, 0.2)) 
test_Var2 <- c(rnorm(50, -0.8, 0.2), rnorm(50, 2, 1)) 
test_x <- matrix(c(test_Var1, test_Var2), nrow = 100, ncol = 2) 
nn.test(dnn, test_x, y) 

#[1] 0.25 

다시 말해서 test_x는 숫자 여야합니다. 귀하의 문제가 당신이 문자로 값을 가지고 있다면 숫자로 변환 할 수 있습니다. mydata<- as.numeric()

+0

제가 숫자를 사용할 때, 회귀 모델은 분류가 아닙니다. 결과, 예측 후 숫자 결과가 아니라 클래스 ID를 얻었다. – Osm

+0

@Osm 분류 및 회귀는 매우 유사합니다. 정확한 이진 값을 얻으려면 출력 예측을 반올림해야합니다. 예를 들어 ** round (x) **를 사용하면 0에 가까운 값을 0으로하고 1에 가까운 값을 0으로합니다. 또한 모델이 올바르게 예측하지 못했을 때 2 또는 3 등이있을 수 있습니다. 이는 혼란스럽지 않은 행렬을 계산할 때 매우 유용합니다. – Learner

관련 문제