NovikovDM 2 месяцев назад
Родитель c0cfe89581
Сommit 200553e9b6

@ -20,25 +20,31 @@ import lab02_lib as lib
```py ```py
data = lib.datagen(8, 8, 1000, 2) data = lib.datagen(8, 8, 1000, 2)
``` ```
![alt text](1.2-1.png)
**3)Создать и обучить автокодировщик AE1 простой архитектуры, выбрав небольшое количество эпох обучения.** **3)Создать и обучить автокодировщик AE1 простой архитектуры, выбрав небольшое количество эпох обучения.**
```py ```py
patience= 300 patience= 300
ae1_trained, IRE1, IREth1= lib.create_fit_save_ae(data,'out/AE1.h5','out/AE1_ire_th.txt', 1000, True, patience) ae1_trained, IRE1, IREth1= lib.create_fit_save_ae(data,'out/AE1.h5','out/AE1_ire_th.txt', 1000, True, patience)
``` ```
![alt text](1.3-1.png)
**4)Зафиксировать ошибку MSE, на которой обучение завершилось. Построить график ошибки реконструкции обучающей выборки. Зафиксировать порог ошибки реконструкции –порог обнаружения аномалий.** **4)Зафиксировать ошибку MSE, на которой обучение завершилось. Построить график ошибки реконструкции обучающей выборки. Зафиксировать порог ошибки реконструкции –порог обнаружения аномалий.**
```py ```py
lib.ire_plot('training', IRE1, IREth1, 'AE1') lib.ire_plot('training', IRE1, IREth1, 'AE1')
``` ```
![alt text](1.4.1-1.png)
![alt text](1.4.2-1.png)
**5)Создать и обучить второй автокодировщик AE2 с усложненной архитектурой, задав большее количество эпох обучения.** **5)Создать и обучить второй автокодировщик AE2 с усложненной архитектурой, задав большее количество эпох обучения.**
```py ```py
ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(data,'out/AE2.h5','out/AE2_ire_th.txt', 3000, True, patience) ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(data,'out/AE2.h5','out/AE2_ire_th.txt', 3000, True, patience)
``` ```
![alt text](1.5-1.png)
**6)Зафиксировать ошибку MSE, на которой обучение завершилось. Построить график ошибки реконструкции обучающей выборки. Зафиксировать второй порог ошибки реконструкции –порог обнаружения аномалий.** **6)Зафиксировать ошибку MSE, на которой обучение завершилось. Построить график ошибки реконструкции обучающей выборки. Зафиксировать второй порог ошибки реконструкции –порог обнаружения аномалий.**
```py ```py
lib.ire_plot('training', IRE2, IREth2, 'AE2') lib.ire_plot('training', IRE2, IREth2, 'AE2')
``` ```
![alt text](1.6.1-1.png)
![alt text](1.6.2-1.png)
**7)Рассчитать характеристики качества обучения EDCA для AE1 и AE2. Визуализировать и сравнить области пространства признаков, распознаваемые автокодировщиками AE1 и AE2. Сделать вывод о пригодности AE1 и AE2 для качественного обнаружения аномалий.** **7)Рассчитать характеристики качества обучения EDCA для AE1 и AE2. Визуализировать и сравнить области пространства признаков, распознаваемые автокодировщиками AE1 и AE2. Сделать вывод о пригодности AE1 и AE2 для качественного обнаружения аномалий.**
```py ```py
numb_square= 20 numb_square= 20
@ -63,18 +69,25 @@ IDEAL = 1. Extrapolation precision (Approx): 0.23170731707317074
lib.plot2in1(data,xx,yy,Z1,Z2) lib.plot2in1(data,xx,yy,Z1,Z2)
``` ```
![alt text](1.7.7-1.png)
![alt text](1.7.1-1.png)
![alt text](1.7.2-1.png)
![alt text](1.7.3-1.png)
![alt text](1.7.4-1.png)
![alt text](1.7.5-1.png)
![alt text](1.7.6-1.png)
**9)Изучить сохраненный набор данных и пространство признаков. Создать тестовую выборку, состоящую, как минимум, из 4ёх элементов, не входящих в обучающую выборку. Элементы должны быть такими, чтобы AE1 распознавал их как норму, а AE2 детектировал как аномалии.** **9)Изучить сохраненный набор данных и пространство признаков. Создать тестовую выборку, состоящую, как минимум, из 4ёх элементов, не входящих в обучающую выборку. Элементы должны быть такими, чтобы AE1 распознавал их как норму, а AE2 детектировал как аномалии.**
```py ```py
data_test= np.loadtxt('data_test.txt', dtype=float) data_test= np.loadtxt('data_test.txt', dtype=float)
``` ```
![alt text](1.9-1.png)
**10)Применить обученные автокодировщики AE1 и AE2 к тестовым данными вывести значения ошибки реконструкции для каждого элемента тестовой выборки относительно порога на график и в консоль.** **10)Применить обученные автокодировщики AE1 и AE2 к тестовым данными вывести значения ошибки реконструкции для каждого элемента тестовой выборки относительно порога на график и в консоль.**
```py ```py
predicted_labels1, ire1 = lib.predict_ae(ae1_trained, data_test, IREth1) predicted_labels1, ire1 = lib.predict_ae(ae1_trained, data_test, IREth1)
lib.anomaly_detection_ae(predicted_labels1, ire1, IREth1) lib.anomaly_detection_ae(predicted_labels1, ire1, IREth1)
lib.ire_plot('test', ire1, IREth1, 'AE1') lib.ire_plot('test', ire1, IREth1, 'AE1')
``` ```
![alt text](1.10-1.png)
```py ```py
predicted_labels2, ire2 = lib.predict_ae(ae2_trained, data_test, IREth2) predicted_labels2, ire2 = lib.predict_ae(ae2_trained, data_test, IREth2)
lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2) lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2)
@ -89,11 +102,13 @@ i Labels IRE IREth
4 [1.] [4.99] 0.47 4 [1.] [4.99] 0.47
Обнаружено 5.0 аномалий Обнаружено 5.0 аномалий
``` ```
![alt text](1.10.2-1.png)
**11)Визуализировать элементы обучающей и тестовой выборки в областях пространства признаков, распознаваемых автокодировщиками AE1 и AE2.** **11)Визуализировать элементы обучающей и тестовой выборки в областях пространства признаков, распознаваемых автокодировщиками AE1 и AE2.**
```py ```py
lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test) lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)
``` ```
![alt text](1.11-1.png)
**12)Результаты исследования занести в таблицу:** **12)Результаты исследования занести в таблицу:**
**Табл. 1 Результаты задания** **Табл. 1 Результаты задания**

Загрузка…
Отмена
Сохранить