2013-07-30 2 views
3

에 나는 분류벡터화 R

post <- c(0.73,0.69,0.44,0.55,0.67,0.47,0.08,0.15,0.45,0.35) 

이상 확률의 배열을 가지고 있고이 예측 클래스를 검색 할 "경우". 지금 나는

predicted <- function(post) { 
       function(threshold) {plyr::aaply(post, 1, 
        function(x) {if(x >= threshold) '+' else '-'})}} 

사용하지만 뭔가 R을위한 구문을 것 같은 그 보인다.

좀 더 직접적인 인덱싱식이 있습니까? @joran으로

+4

나는 지금까지 본 'ifelse'의 가장 복잡한 구현이어야합니다. :) – joran

+0

응? 당신의'예기 된'기능은 무엇을해야합니까? – Thomas

+1

@Thomas 내가 잠시 생각하다 :'예측했다 (post) (0.5)'. – joran

답변

6

는 제안 :

predicted <- function(post) 
    function(threshold) 
     ifelse(post>threshold,"+","-") 

나는 약간 혼란 기능의 nestedness을 찾을 수 있습니다.

ifelse(post>threshold,"+","-") 

는 심지어 기능에 패키지 필요하지 않을 수도 있음을 충분히 간단한 보인다.

또는 당신은 또한

predicted <- function(post,threshold=0.5,alt=c("+","-")) 
    alt[1+(post<=threshold)] 

아마 (post>threshold 1의 결과로, 1에 추가 할 때 0/1에 강요하는 논리 벡터를 제공 소폭 빠른 것

predicted <- function(post,threshold=0.5,alt=c("+","-")) 
     ifelse(post>threshold,alt[1],alt[2]) 

를 사용할 수 있습니다 "below"는 2, "above"는 2). 아니면 @DWin이 답변 한대로 alt의 순서를 바꿀 수 있습니다.

7
pred <- c("-", "+")[1+(post > 0.5)] 
+0

그냥 그 중 하나를 추가하는 중입니다 ... –

+3

가장 벡터화 된 것 같아서 넣었습니다. 나는 이전의 SO 조사가 속도 (명확성)면에서 'ifelse'보다 열등한 것으로 나타났습니다. –

+0

아, 좋은 방법입니다. – nicolas