Нормализовать два массива со вторым массивом в качестве основы для нормализации первого массива

Чтобы найти индикаторы качества, такие как расстояние между поколениями, инвертированное расстояние между поколениями, индикатор Эпсилон и HyperVolume для фронта Парето, я хочу нормализовать значения фронта аппроксимации, полученные при решении алгоритма на основе эталонного фронта, который, как я полагаю, включает фронт аппроксимации.

      reference_front = np.array([[0.5, 2.0], [1, 1.0], [1.2, 0.833], [2.3, 0.435], [3, 0.333]])
approximation_front = np.array([[0.8, 2.5], [1.0, 2.0], [2.1, 0.952], [2.8, 0.714]])
reference_point = [max(approximation_front[:,0]),max(approximation_front[:,0])]

Я использовал приведенный ниже код для нормализации. Тем не менее, это для одного массива за раз

      from sklearn.preprocessing import MinMaxScaler
    min_max_scaler = MinMaxScaler()
reference_front_norm = min_max_scaler.fit_transform(reference_front)
approximation_front_norm = min_max_scaler.fit_transform(approximation_front)
reference_point = [max(approximation_front[:,0]),max(approximation_front[:,0])]

Здесь фронт аппроксимации и эталонный фронт нормируются отдельно. Можем ли мы нормализовать приблизительный фронт от 0 до 1 на основе максимального и минимального значений опорного фронта.

1 ответ

Решение

После нанесения вы можете просто использовать transform. Это будет использовать 'fit' из fit_transformвызов. В твоем случае

      reference_front_norm = min_max_scaler.fit_transform(reference_front)
approximation_front_norm = min_max_scaler.transform(approximation_front)
Другие вопросы по тегам