Python을 사용한 가중치 무작위 선택
Python에서는 Random 및 NumPy 라이브러리를 사용하여 쉽게 난수를 생성 할 수 있습니다.
요소의 가능한 결과에 따라 목록 또는 배열에서 임의의 요소를 선택하는 것을 가중치 무작위 선택이라고합니다. 요소의 선택은 존재하는 각 요소에 확률을 할당하여 결정됩니다. 때로는 만들어진 요소 목록에서 둘 이상의 요소가 선택되기도합니다.
이 자습서에서는 Python에서 가중치가 적용된 임의 선택을 생성하는 방법에 대해 설명합니다.
random.choices()
함수를 사용하여 가중 임의 선택 항목 생성
여기서 Python의random
모듈은 난수를 만드는 데 사용됩니다.
choices()
함수에서 대체로 가중치가 부여 된 무작위 선택이 이루어집니다. 대체가있는 가중 무작위 표본이라고도합니다. 또한이 기능에서 가중치는 필수적인 역할을합니다. 가중치는 각 요소 선택의 가능한 결과를 정의합니다. 가중치에는 두 가지 유형이 있습니다.
- 상대 가중치
- 누적 가중치
상대적 가중치가있는 요소 선택
weights
매개 변수는 상대 가중치를 정의합니다. 가능한 결과는 목록의 각 요소마다 다릅니다. 각 요소에 대한 가능한 결과가 상대 가중치를 사용하여 고정 된 경우 상대 가중치만을 기준으로 선택이 이루어집니다.
다음은 예입니다.
import random
List = [12, 24, 36, 48, 60, 72, 84]
print(random.choices(List, weights=(30, 40, 50, 60, 70, 80, 90), k=7))
여기서 목록의 각 요소에는 자체 가중치, 즉 가능한 결과가 부여됩니다. 또한 위의 예에서 k는 주어진 목록에서 필요한 요소의 수입니다.
출력:
[60, 84, 36, 72, 84, 84, 60]
여기서 가중치의 총합은 백분율이 아니라 상대 가중치이기 때문에 100이 아닙니다. 84 번은 모든 가중치 중 가중치가 가장 높기 때문에 세 번 발생했습니다. 따라서 발생 확률이 가장 높습니다.
누적 가중치가있는 요소 선택
cum_weight
매개 변수는 누적 가중치를 정의하는 데 사용됩니다. 요소의 누적 가중치는 이전 요소의 가중치와 해당 요소의 상대적 가중치에 의해 결정됩니다. 예를 들어, 상대 가중치 [10, 20, 30, 40]는 누적 가중치 [10, 30, 60, 100]와 같습니다.
다음은 예입니다.
import random
List = [13, 26, 39, 52, 65]
print(random.choices(List, cum_weights=(10, 30, 60, 100, 150), k=5))
출력:
[65, 65, 39, 13, 52]
여기서도 65라는 숫자는 가중치가 가장 높기 때문에 다른 숫자보다 더 많이 발생합니다.
numpy.random.choice()
함수를 사용하여 가중 임의 선택 항목 생성
무작위 가중치 선택을 생성하기 위해 NumPy는 일반적으로 사용자가 3.6 미만의 Python 버전을 사용할 때 사용됩니다.
여기서numpy.random.choice
는 확률 분포를 결정하는 데 사용됩니다. 이 방법에서는 1D 배열의 임의 요소를 취하고choice()
함수를 사용하여 numpy 배열의 임의 요소를 반환합니다.
import numpy as np
List = [500, 600, 700, 800]
sNumbers = np.random.choice(List, 4, p=[0.10, 0.20, 0.30, 0.40])
print(sNumbers)
여기서 확률은 1이어야합니다. 숫자 4는 목록의 크기를 나타냅니다.
출력:
[800 500 600 800]
Lakshay Kapoor is a final year B.Tech Computer Science student at Amity University Noida. He is familiar with programming languages and their real-world applications (Python/R/C++). Deeply interested in the area of Data Sciences and Machine Learning.
LinkedIn