Я экспериментирую с Python / Pandas, используя DataFrame, имеющий следующую структуру:
import pandas as pd
import numpy as np
df = pd.DataFrame({"item" : ["A", "B", "C", "D", "E"],
"size_ratio" : [0.3, 0.9, 1, 0.4, 0.7],
"weight_ratio" : [0.5, 0.7, 1, 0.5, np.nan],
"power_ratio" : [np.nan, 0.3, 0.5, 0.1, 1]})
print(df)
item size_ratio weight_ratio power_ratio
0 A 0.3 0.5 NaN
1 B 0.9 0.7 0.3
2 C 1.0 1.0 0.5
3 D 0.4 0.5 0.1
4 E 0.7 NaN 1.0
Как видите, каждый элемент описывается тремя нормализованными метриками, а именно: size_ratio
, weight_ratio
и power_ratio
.Кроме того, NaN
значения возможны для каждой метрики.
Моя цель состоит в том, чтобы объединить эти показатели вместе, чтобы создать глобальный счет ( S ) для каждой строки.В частности, функция, которую я хотел бы применить / реализовать, следующая:
, где
- s_i - индивидуальные оценки;
- w_i - определяемые пользователем веса, связанные с каждой метрикой;
- alpha - определяемый пользователем параметр (положительное целое число).
Я хочу иметь возможность быстро настроить вес и параметр alpha для проверки различных комбинаций.
Например, настройка w_1 = 3, w_2 = 2 , w_3 = 1 и alpha = 5, выходные данные должны быть следующими:
item size_ratio weight_ratio power_ratio global_score
0 A 0.3 0.5 NaN 0.36
1 B 0.9 0.7 0.3 0.88
2 C 1.0 1.0 0.5 0.99
3 D 0.4 0.5 0.1 0.44
4 E 0.7 NaN 1.0 0.70
Обратите внимание, что для знаменателя мы суммируем только веса, связанные с не пропущенными метриками (та же логика применима к числителю).
Будучи относительно новым для языка программирования Python, я начал с поиска ответов здесь.В этом посте я узнал, как вычислять построчную операцию на панде DataFrame с пропущенными значениями;и в этом посте я видел пример, где каждый использует словарь для установки весов.
К сожалению, я не смог применить то, что нашел, к своей конкретной проблеме.Прямо сейчас я использую Excel для создания различных симуляций, но я бы очень хотел поэкспериментировать с этим в Python.Любая помощь будет принята с благодарностью.