У меня есть 3 набора данных, которые содержат прогнозы, имена пользователей и метки соответственно. Используя приведенный ниже код, я усредняю прогнозы пользователей (на основе помощи от Jaime и ali_m от Average using grouping value in another vector (numpy/Python)). Этикетки связаны с каждым наблюдением, и поэтому имеется избыточная информация. Я хотел бы найти уникальный ярлык для каждого пользователя, используя idx
. Как это сделать в NumPy?Прикрепите информацию о ярлыке при усреднении прогнозов для пользователей
>>> pred
[ 0.99 0.23 0.11 0.64 0.45 0.55 0.76 0.72 0.97 ]
>>> users
['User2' 'User3' 'User2' 'User3' 'User0' 'User1' 'User4' 'User4' 'User4']
>>> label
[ 1 0 1 0 0 1 0 0 0 ]
unq, idx, cnt = np.unique(user_data, return_inverse=True, return_counts=True) # assign integer indices to each unique user name, and get the total number of occurrences for each name
predictions_user = np.bincount(idx, weights=pred)/cnt # now sum the values of pred corresponding to each index value and divide to get the mean
Выход в настоящее время:
>>> unq
array(['User0', 'User1', 'User2', 'User3', 'User4'], dtype='|S5')
>>> predictions_user
array([ 0.45, 0.55, 0.55, 0.435, 0.81666667])
Я хотел бы добавить последнюю переменную с именем label_user
. Каждое значение будет меткой, ассоциированной с пользователем, с тем же индексом в unq
.
Пример вывода:
>>> label_user
array([0, 1, 1, 0, 0])
это делает его более ясным? – pir