고유 ID가 9000 개인 데이터 프레임 df가 있습니다.교체로 pyspark에서 무작위 샘플링
| id |
1
2
처럼 교체와 무작위 표본이 9000 IDS 100000 번 생성합니다. 내가 (사실, 0.5,100) df.sample
을 시도하지만 정확한 100000 수
고유 ID가 9000 개인 데이터 프레임 df가 있습니다.교체로 pyspark에서 무작위 샘플링
| id |
1
2
처럼 교체와 무작위 표본이 9000 IDS 100000 번 생성합니다. 내가 (사실, 0.5,100) df.sample
을 시도하지만 정확한 100000 수
좋아에 도착하는 방법을 알고, 그래서 첫 번째 것들하지 않는
pyspark에 그것을 어떻게 먼저. 당신은 아마 당신의 (이상) 표본에서 정확히 10 만명을 얻을 수 없을 것입니다. 왜 샘플링을 효율적으로하기 위해서 Spark는 Bernouilli Sampling이라는 것을 사용합니다. 기본적으로 이는 RDD를 통과하고 각 행에 포함될 확률을 지정합니다. 따라서 10 % 샘플을 원할 경우 각 행마다 개별적으로 10 %의 확률이 포함되지만 원하는 개수만큼 완벽하게 합치면 고려하지 않지만 큰 데이터 세트의 경우에는 매우 가깝습니다.
코드는 다음과 같습니다 : df.sample(True, 11.11111, 100)
. 그러면 원본 데이터 세트의 크기 인 11.11111 배에 해당하는 데이터 세트 샘플이 생성됩니다. 11.11111 * 9,000 ~ = 100,000 이후로 약 10 만 개의 행이 생성됩니다.
정확한 샘플을 원하면 df.takeSample(True, 100000)
을 사용해야합니다. 그러나 분산 데이터 셋이 아닙니다. 이 코드는 배열 (매우 큰 배열)을 반환합니다. 그것이 메인 메모리에서 생성 될 수 있다면 그렇게하십시오. 그러나 정확한 ID 번호가 필요하므로 분산 된 방식으로이를 수행하는 방법을 알지 못합니다.
분명히하려면 9000 개의 ID가있는 무작위 샘플을 가져와야합니다. 각 샘플에는 4,500 개의 ID가 있으며 (대체 샘플링 이후 반복 될 수 있음)이 샘플이 10 만 개가 필요합니까? –
9000은 내가 가지고있는 고유 한 ID의 인구이며, 인구를 100000으로 대체하고 무작위로 초과 할당하려고합니다. 그래서 평범한 영어로, 난 무작위로 9000 ID의 항아리에서 100000 번 무작위 ID를 선택하고 싶습니다. 이게 도움이 되길 바란다. –
감사합니다. 나는 그것을 통해 지금 일하려고 노력할 것이다. –