На этом шаге мы закончим изучение этого вопроса.
Следующий однострочник находит все аномальные дни, для которых статистические показатели отличаются более чем на стандартное отклонение от среднего значения.
## Зависимости import numpy as np ## Данные анализа сайта ## (строка = день), (столбцы = пользователи, отказы, длительность) a = np.array([[815, 70, 115], [767, 80, 50], [912, 74, 77], [554, 88, 70], [1008, 65, 128]]) mean, stdev = np.mean(a, axis=0), np.std(a, axis=0) # [811.2 76.4 88. ], [152.97764543 6.85857128 29.04479299] ## Однострочник outliers = ((np.abs(a[:, 0] - mean[0]) > stdev[0]) * (np.abs(a[:, 1] - mean[1]) > stdev[1]) * (np.abs(a[:, 2] - mean[2]) > stdev[2])) ## Результат print(a[outliers])
Сможете догадаться, какие результаты выведет этот фрагмент кода?
Набор данных состоит из строк, соответствующих различным дням, и трех столбцов, отражающих количество активных пользователей за день, показатель отказов и среднюю длительность сеанса в секундах соответственно.
Для каждого столбца мы вычисляем среднее значение и стандартное отклонение. Например, среднее значение столбца "Активных пользователей за день" равно 811,2, а его стандартное отклонение равно 152,97. Обратите внимание, что аргумент axis используется аналогично изложенному в разделе "Очистка каждого i-го элемента массива с помощью транслирования, присваивания срезу и изменения формы" на 42 шаге.
Наша задача - выявить аномальные по всем трем столбцам сайты. Что касается столбца "Активных пользователей за день", то любое наблюдаемое значение меньше 811,2 - 152,97 = 658,23 или больше 811,2 + 152,23 = 963,43 считается аномальным.
Однако целый день мы считаем аномальным только в том случае, если значения во всех трех наблюдаемых столбцах являются аномальными. Для этого мы объединяем три булевых массива с помощью оператора логического И. Результат представляет собой единственную строку, в которой все три столбца - аномальные значения:
[[1008 65 128]]
Резюмируя: вы научились использовать оператор логического И библиотеки NumPy в целях простейшего обнаружения аномальных значений с помощью простых статических средств из библиотеки NumPy. Далее вы узнаете о секретном ингредиенте успеха Amazon: адекватные рекомендации продуктов для покупки.
На следующем шаге мы рассмотрим простейший анализ ассоциаций.