Как работать со random.choice в numpy - PullRequest
0 голосов
/ 09 мая 2020

У меня есть два списка, и первый содержит элементы L1 = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'] и второй список содержит вероятности того, что пользователи выберут эти элементы, в нашем случае пользователь может быть связан с более чем одним элементом. список вероятностей: Вероятности = [0,05, 0,1, 0,1, 0,1, 0,9, 0,9, 0,05, 0,5]. В настоящее время я использую

np.random.choice(Product, 2, p=Probabilities), но получаю ValueError: вероятности не суммируются до 1

Пожалуйста, предложите, что мне делать, чтобы получить желаемые результаты без изменения вероятностей

1 Ответ

0 голосов
/ 09 мая 2020
import numpy as np
probs = np.array([0.05, 0.1, 0.1, 0.1, 0.9, 0.9, 0.05, 0.5])
sum_of_elements = sum(probs)
a = 1/sum_of_elements
probs_scaled = [e*a for e in probs]

Вы должны масштабировать свои вероятности как Code Different , упомянутые в комментариях. Код выше сделает это за вас.

Сумма новых вероятностей равна 1:

[0.01851851851851852, 0.03703703703703704, 0.03703703703703704, 0.03703703703703704, 0.33333333333333337, 0.33333333333333337, 0.01851851851851852, 0.1851851851851852]

Как видите, крысы ios такие же.

А вот и ваш желаемый результат np.random.choice в качестве примера:

np.random.choice(Product, 2, p=probs_scaled)

['B', 'E']

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...