O_Sieve – это алгоритм обнаружения выбросов, использующий трехмерную проекцию точек данных. Он вычисляет расстояния точек данных от центральной точки в трехмерном пространстве на основе квадратов значений целевого столбца. Затем алгоритм определяет верхний и нижний пороговые значения расстояния, используя подход, основанный на медиане. Точки данных, выходящие за пределы этих пороговых значений, считаются выбросами.
Математика
Предположение:возведение в квадрат меньших чисел делает их еще меньше, а возведение в квадрат больших чисел делает их еще больше.
Предположим, набор чисел,
2, 3, 101, 202, 240, 265, 385, 1005, 2050
Можно прямо сказать, что экстремумы не совпадают с другими данными, это выбросы, почему? Данные сортируются и значения распределяются по определенному диапазону, а остальное — это ошибки в данных. Реальный мир не так чист, как этот. Поэтому нам нужно будет применить некоторые преобразования к этим данным, следующее сделает именно это.
Сведите их в квадрат. Это даст нам,
4, 9, 10201, 40804, 57600, 70225, 148225, 1010025, 4202500
Теперь спроецируйте эти данные в трех измерениях.
Чтобы лучше понять, давайте предположим, что большое оранжевое пятно на графике выше — это Солнце, а остальные точки вокруг него — это планеты. Мы видим, что есть четыре точки (обведены), которые не соответствуют остальным точкам.
Рассчитать расстояние до Солнца
Для этого мы разделим задачу на две части: расстояния над солнцем и под солнцем. В качестве расстояния мы будем использовать евклидово расстояние в трехмерном пространстве.
Координаты Солнца: x, y, z= (4.0, 472.55555555555554, 615510.3333333334)
Выше Солнца:
Точка 1005: 394515.025976
Точка 2050: 3586990.013524
Под солнцем:
Точка 2: 615506.513217
Точка 4: 615501.512449
Точка 101: 605309.447372
Точка 202: 574706.397019
Точка 240: 557910.381802
Точка 265: 545285.372835
Точка 385: 467285.341536
На основе этих данных мы будем рассчитывать две медианы. В дополнение к этому нам необходимо также определить координаты x, y, z, относящиеся к медианам.
Медиана над Солнцем: 1990752,51975; x, y, z = (1, 3, 5105)
Медиана ниже Солнца: 574706,397019; x, y, z = (3, 202, 40804)
Рассчитайте расстояние до центра от новых точек, таких как upper_distribution_length и lower_distribution_length.
upper_distribution_length=610405.513944
lower_distribution_length=574706.397019
Чтобы найти z_dist_plane1 и z_dist_plane2
z_dist_plane1 = 615510.3333333334 +( 610405.513944* 1 →верхний коэффициент масштабирования)
z_dist_plane2 = 615510.3333333334 — ( 574706.397019* 1 → Нижний коэффициент масштабирования)
Эти два определяют расстояния плоскости от центра.
Мы можем настроить коэффициент масштабирования на основе данных и графика hcps (Heilo-centric Planar Slicing Plot).
Настройка верхнего коэффициента масштабирования на 0,5.
Результирующий список чисел после фильтрации будет примерно таким
101, 202, 240, 265, 385
Закулисная аналогия Солнца и планет привела к названию пакета vcosmos (Виртуальный Космос).
Код
Установка пакета и импорт необходимых модулей. Я использую тот же набор данных, который использовался в предыдущих демонстрациях CO2.csv, который доступен здесь.
pip install vcosmos import pandas as pd from spatial_domain.anamoly import O_Sieve df=pd.read_csv('co2.csv') print(df.head) # Make Model Vehicle Class Engine Size(L) ... Fuel Consumption Hwy (L/100 km) Fuel Consumption Comb (L/100 km) Fuel Consumption Comb (mpg) CO2 Emissions(g/km) # 0 ACURA ILX COMPACT 2.0 ... 6.7 8.5 33 196 # 1 ACURA ILX COMPACT 2.4 ... 7.7 9.6 29 221 # 2 ACURA ILX HYBRID COMPACT 1.5 ... 5.8 5.9 48 136 # 3 ACURA MDX 4WD SUV - SMALL 3.5 ... 9.1 11.1 25 255 # 4 ACURA RDX AWD SUV - SMALL 3.5 ... 8.7 10.6 27 244 # [5 rows x 12 columns]
Вызов класса O_Sieve.
seive= O_Sieve(df,'CO2 Emissions(g/km)',tsf=2.95,bsf=2) clean_data=seive.filtered_data() plot=seive.hcps_plot() print(clean_data.head()) # Filtering Initiated.... # Filtering Complete. # Ouliers Removed: 86 # Make Model Vehicle Class Engine Size(L) ... Fuel Consumption Hwy (L/100 km) Fuel Consumption Comb (L/100 km) Fuel Consumption Comb (mpg) CO2 Emissions(g/km) # 0 ACURA ILX COMPACT 2.0 ... 6.7 8.5 33 196 # 1 ACURA ILX COMPACT 2.4 ... 7.7 9.6 29 221 # 2 ACURA ILX HYBRID COMPACT 1.5 ... 5.8 5.9 48 136 # 3 ACURA MDX 4WD SUV - SMALL 3.5 ... 9.1 11.1 25 255 # 4 ACURA RDX AWD SUV - SMALL 3.5 ... 8.7 10.6 27 244 # [5 rows x 12 columns]
Полученный график также содержит диаграммы до и после очистки в дополнение к графику hcps для проверки процесса очистки.
Подвести итог,
- Возведите значения в квадрат так, чтобы выбросы всегда находились на крайних концах.
- Рассчитайте расстояния от точек данных до центра.
- Найдите медианное расстояние и получите координаты, вычислите расстояние от центра до новых координат.
- Добавьте расстояние к координате z Солнца и умножьте их на масштабные коэффициенты.
- Отрегулируйте коэффициенты масштабирования, чтобы получить очищенный набор данных.
Спасибо за чтение.
Чтобы узнать больше о параметрах и коде, посетите Pypi и Github.
Если вы хотите внести свой вклад в проект или предложить что-нибудь. Пожалуйста, свяжитесь со мной
[email protected]