Допустим, у меня есть
values = [0.1, 0.2, 0.5, 1, 2, 5, 10, 20, 50]
и я хочу масштабировать каждый элемент на вес , чтобы значения становились меньше (или больше) быстрее, чем дальше от среднего. То есть, чтобы «маленькие числа» (числа ниже среднего) были больше, а «большие числа» (числа выше среднего) меньше.
Давайте представим, что среднее значение равно 1, тогда:
scale(values) -> [0.6, 0.7, 0.8, 1, 1.5, 4, 8, 12, 20]
Значения выше среднего будут уменьшаться быстрее, чем дальше они (от 2 до 1,5, но от 50 до 20), тогда как значения ниже среднего будут увеличиваться быстрее, чем дальше они ( От 0,5 до 0,8, но от 0,1 до 0,6).
Я пытался найти «как нормализовать данные», но такие ответы одинаково масштабируют все значения. Например
scaled = [(i - min(values))/max(values) for i in values]
Кроме того, мне необходимо для контроля веса, в котором масштабируются значения.