np.random.choice???
intro
np.random.choice
를 이용해서, 일정 확률을 이용해서 random하게 sampling할 때가 있습니다.- 코드로 표현하면 다음처럼 되겠죠.
for i in range(0, 3):
a = np.random.choice(['b', 'c'], 10, [0.9, 0.1])
print(a)
- 어, 근데 결과가 이상합니다. c가 터무니 없이 많이 나오네요.
['c' 'b' 'c' 'c' 'b' 'c' 'b' 'b' 'c' 'b']
['c' 'b' 'b' 'b' 'b' 'b' 'c' 'b' 'c' 'b']
['c' 'b' 'b' 'c' 'c' 'c' 'b' 'c' 'b' 'c']
numpy.random.choice(a, size=None, replace=True, p=None)¶
- 세번째 오는 값은 p가 아니라,
replace
인 것이죠. 따라서 문제가 발생합니다. - 따라서, 다음으로 고치면 잘 됩니다.
for i in range(0, 3):
a = np.random.choice(['b', 'c'], 10, p=[0.9, 0.1])
print(a)
['b' 'b' 'c' 'b' 'b' 'b' 'b' 'b' 'b' 'b']
['b' 'b' 'b' 'b' 'b' 'b' 'b' 'b' 'b' 'b']
['b' 'b' 'b' 'b' 'b' 'c' 'b' 'b' 'b' 'b']
wrap-up
- 사실 아주 사소한 것이기는 합니다만, 이걸 하나 실수하면 좀 큰 문제가 발생히기 쉬워요.
- 보통 이정도의 함수는 테스트 없이 그냥 집어넣으니까요,
- 가능하면 argument를 넘길 때, var_name이랑 함께 넘겨주는 편이 훨씬 좋은 것 같습니다.
댓글남기기