R에서 머리 / 꼬리 나누기 분류 알고리즘

필요

R에서 head / tail breaks 분류 알고리즘을 구현하려고합니다 ( 여기 참조 ). 비교적 새로운이 알고리즘은 고도로 치우친 데이터에 대해지도 제작에서 사용되는 다른 분류 방법에 비해 계산 비용이 덜 드는 대안입니다.

지금까지 비교적 성공한 Python ( 여기 참조 ) 코드를 템플릿으로보고 있습니다. 다음은 R로 구현 한 것입니다.

# fake data to classify
pareto_data <- c()
for (i in 1:100){
  pareto_data[i] <- (1.0/i)^1.16
}

# head/tail breaks algorithm
ht <- function(data){
  ln <- length(data)
  mn <- mean(data)
  res <- append(c(),mn) # this is where I was hopping to store my output
  head <- subset(data,data>=mn)
  while (length(head)>=1 & length(head)/ln <= 0.40){
    print(res)
    return(ht(head))
  }
  #return(res)
}

ht(pareto_data)

위의 코드를 실행 한 결과 다음을 인쇄 할 수있었습니다.

[1] 0.03849691
[1] 0.1779904
[1] 0.4818454 

이 출력은 내가 템플릿으로 사용했던 원래 Python 코드를 실행하는 것과 거의 동일합니다. 그러나 벡터 또는 목록에 저장하는 데 성공하지 못했습니다.

이 문제를 극복하고 내 코드를 개선 할 수있는 힌트를 줄 수 있다면 정말 감사 할 것입니다 (특히 while문장 의 조건에서 파이썬의 원래 코드와 정확히 동일하지는 않습니다 ).

루이 바라 다스

알고리즘의 가능한 재귀 버전은 다음과 같습니다.

ht_breaks <- function(x){
  ht_inner <- function(x, mu){
    n <- length(x)
    mu <- c(mu, mean(x))
    h <- x[x > mean(x)]
    if(length(h) > 1 && length(h)/n <= 0.4){
      ht_inner(h, mu)
    } else mu
  }
  ht_inner(x, NULL)
}

pareto_data <- (1.0/(1:100))^1.16
ht_breaks(pareto_data)
#[1] 0.03849691 0.17799039 0.48184535

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

분류 알고리즘에서 의사 결정 트리 분석

분류에서Dev

콜라 머신에서 컵 채우기 (알고리즘)

분류에서Dev

C ++에서 분할 알고리즘

분류에서Dev

균형 잡힌 분기 알고리즘

분류에서Dev

나머지에서 고유 한 오류 분리

분류에서Dev

알고리즘 분석

분류에서Dev

한 번에 모든 알고리즘에 대해 R의 Caret에서 알고리즘 유형 (회귀, 분류)을 찾는 방법은 무엇입니까?

분류에서Dev

사용자가 로그인하는 시간을 분류하는 기계어 알고리즘에 대한 제안

분류에서Dev

32 비트 프로세서에서 64 비트 / 64 비트 나머지 찾기 알고리즘?

분류에서Dev

계산기 알고리즘

분류에서Dev

길 찾기 알고리즘

분류에서Dev

뒤집기 알고리즘

분류에서Dev

R에서 SQP 알고리즘 수행

분류에서Dev

그리드 알고리즘에서 로봇의 경로 찾기

분류에서Dev

간단한 퀵 정렬 알고리즘에 대한 haskell 구문 분석 오류

분류에서Dev

자바 알고리즘에서 문자열 분할

분류에서Dev

자바 알고리즘에서 문자열 분할

분류에서Dev

RLE 알고리즘에서 Python Off-by-One 오류 방지

분류에서Dev

.Net에서 Java로 TripleDES 알고리즘 적용 오류

분류에서Dev

이 알고리즘이 잘림 오류를 누적합니까?

분류에서Dev

50 자리 이상 (최대 200) 알고리즘으로 두 숫자 나누기

분류에서Dev

푸리에 계수 알고리즘 찾기

분류에서Dev

hist에서 분포의 머리와 꼬리에 다른 빈 크기를 할당하는 방법은 무엇입니까?

분류에서Dev

세 종류의 공을 분류하는 알고리즘

분류에서Dev

Azure Machine Learning : 다중 클래스 분류 알고리즘 오류

분류에서Dev

다중 클래스 분류 설정에서 Logitboost 알고리즘에서 기능 중요도를 추출하는 방법은 무엇입니까?

분류에서Dev

루프 분석-알고리즘 분석

분류에서Dev

분류 알고리즘을 적용하기 전에 범주 형 데이터를 사전 처리하는 방법은 무엇입니까?

분류에서Dev

각 부분 결과를 산출하는 접기 알고리즘

Related 관련 기사

  1. 1

    분류 알고리즘에서 의사 결정 트리 분석

  2. 2

    콜라 머신에서 컵 채우기 (알고리즘)

  3. 3

    C ++에서 분할 알고리즘

  4. 4

    균형 잡힌 분기 알고리즘

  5. 5

    나머지에서 고유 한 오류 분리

  6. 6

    알고리즘 분석

  7. 7

    한 번에 모든 알고리즘에 대해 R의 Caret에서 알고리즘 유형 (회귀, 분류)을 찾는 방법은 무엇입니까?

  8. 8

    사용자가 로그인하는 시간을 분류하는 기계어 알고리즘에 대한 제안

  9. 9

    32 비트 프로세서에서 64 비트 / 64 비트 나머지 찾기 알고리즘?

  10. 10

    계산기 알고리즘

  11. 11

    길 찾기 알고리즘

  12. 12

    뒤집기 알고리즘

  13. 13

    R에서 SQP 알고리즘 수행

  14. 14

    그리드 알고리즘에서 로봇의 경로 찾기

  15. 15

    간단한 퀵 정렬 알고리즘에 대한 haskell 구문 분석 오류

  16. 16

    자바 알고리즘에서 문자열 분할

  17. 17

    자바 알고리즘에서 문자열 분할

  18. 18

    RLE 알고리즘에서 Python Off-by-One 오류 방지

  19. 19

    .Net에서 Java로 TripleDES 알고리즘 적용 오류

  20. 20

    이 알고리즘이 잘림 오류를 누적합니까?

  21. 21

    50 자리 이상 (최대 200) 알고리즘으로 두 숫자 나누기

  22. 22

    푸리에 계수 알고리즘 찾기

  23. 23

    hist에서 분포의 머리와 꼬리에 다른 빈 크기를 할당하는 방법은 무엇입니까?

  24. 24

    세 종류의 공을 분류하는 알고리즘

  25. 25

    Azure Machine Learning : 다중 클래스 분류 알고리즘 오류

  26. 26

    다중 클래스 분류 설정에서 Logitboost 알고리즘에서 기능 중요도를 추출하는 방법은 무엇입니까?

  27. 27

    루프 분석-알고리즘 분석

  28. 28

    분류 알고리즘을 적용하기 전에 범주 형 데이터를 사전 처리하는 방법은 무엇입니까?

  29. 29

    각 부분 결과를 산출하는 접기 알고리즘

뜨겁다태그

보관