ответвлено от main/is_dnn
fix: fix images LR2
Этот коммит содержится в:
@@ -28,7 +28,19 @@ print(data)
|
||||
print('Размерность данных:')
|
||||
print(data.shape)
|
||||
```
|
||||
|
||||

|
||||
```
|
||||
Исходные данные:
|
||||
[[5.8619435 5.99297106]
|
||||
[6.12066008 5.98527609]
|
||||
[5.98643623 5.9813867 ]
|
||||
...
|
||||
[5.80640873 6.16429542]
|
||||
[6.01437944 6.13645626]
|
||||
[6.00333385 5.99329265]]
|
||||
Размерность данных:
|
||||
(1000, 2)
|
||||
```
|
||||
|
||||
### 3) Создали и обучили автокодировщик AE1 простой архитектуры, выбрав небольшое количество эпох обучения. Зафиксировали в таблице вида табл.1 количество скрытых слоёв и нейронов в них
|
||||
|
||||
@@ -47,6 +59,7 @@ ae1_trained, IRE1, IREth1 = lib.create_fit_save_ae(data,'out/AE1.h5','out/AE1_ir
|
||||
# Построение графика ошибки реконструкции
|
||||
lib.ire_plot('training', IRE1, IREth1, 'AE1')
|
||||
```
|
||||

|
||||
|
||||
### 5) Создали и обучили второй автокодировщик AE2 с усложненной архитектурой, задав большее количество эпох обучения
|
||||
|
||||
@@ -64,6 +77,7 @@ ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(data,'out/AE2.h5','out/AE2_ir
|
||||
# Построение графика ошибки реконструкции
|
||||
lib.ire_plot('training', IRE2, IREth2, 'AE2')
|
||||
```
|
||||

|
||||
|
||||
### 7) Рассчитали характеристики качества обучения EDCA для AE1 и AE2. Визуализировали и сравнили области пространства признаков, распознаваемые автокодировщиками AE1 и AE2. Сделали вывод о пригодности AE1 и AE2 для качественного обнаружения аномалий.
|
||||
|
||||
@@ -73,6 +87,23 @@ lib.ire_plot('training', IRE2, IREth2, 'AE2')
|
||||
numb_square = 20
|
||||
xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)
|
||||
```
|
||||

|
||||
```
|
||||
amount: 21
|
||||
amount_ae: 287
|
||||
```
|
||||

|
||||

|
||||
|
||||
```
|
||||
Оценка качества AE1
|
||||
IDEAL = 0. Excess: 12.666666666666666
|
||||
IDEAL = 0. Deficit: 0.0
|
||||
IDEAL = 1. Coating: 1.0
|
||||
summa: 1.0
|
||||
IDEAL = 1. Extrapolation precision (Approx): 0.07317073170731707
|
||||
```
|
||||
|
||||
|
||||
```python
|
||||
# построение областей покрытия и границ классов
|
||||
@@ -80,11 +111,28 @@ xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)
|
||||
numb_square = 20
|
||||
xx, yy, Z2 = lib.square_calc(numb_square, data, ae2_trained, IREth2, '2', True)
|
||||
```
|
||||

|
||||
```
|
||||
amount: 21
|
||||
amount_ae: 28
|
||||
```
|
||||

|
||||

|
||||
|
||||
```
|
||||
Оценка качества AE2
|
||||
IDEAL = 0. Excess: 0.3333333333333333
|
||||
IDEAL = 0. Deficit: 0.0
|
||||
IDEAL = 1. Coating: 1.0
|
||||
summa: 1.0
|
||||
IDEAL = 1. Extrapolation precision (Approx): 0.75
|
||||
```
|
||||
|
||||
```python
|
||||
# сравнение характеристик качества обучения и областей аппроксимации
|
||||
lib.plot2in1(data, xx, yy, Z1, Z2)
|
||||
```
|
||||

|
||||
|
||||
### 8) Если автокодировщик AE2 недостаточно точно аппроксимирует область обучающих данных, то подобрать подходящие параметры автокодировщика и повторить шаги (6) – (8).
|
||||
|
||||
@@ -97,6 +145,12 @@ lib.plot2in1(data, xx, yy, Z1, Z2)
|
||||
data_test = np.loadtxt('data_test.txt', dtype=float)
|
||||
print(data_test)
|
||||
```
|
||||
```
|
||||
[[4.52855237 4.55922899]
|
||||
[4.64838873 4.69473527]
|
||||
[4.41414674 4.47819019]
|
||||
[4.43922161 4.43454531]]
|
||||
```
|
||||
|
||||
### 10) Применили обученные автокодировщики AE1 и AE2 к тестовым данным и вывели значения ошибки реконструкции для каждого элемента тестовой выборки относительно порога на график и в консоль.
|
||||
|
||||
@@ -110,6 +164,10 @@ predicted_labels1, ire1 = lib.predict_ae(ae1_trained, data_test, IREth1)
|
||||
lib.anomaly_detection_ae(predicted_labels1, ire1, IREth1)
|
||||
lib.ire_plot('test', ire1, IREth1, 'AE1')
|
||||
```
|
||||
```
|
||||
Аномалий не обнаружено
|
||||
```
|
||||

|
||||
|
||||
```python
|
||||
# тестирование АE2
|
||||
@@ -121,6 +179,15 @@ predicted_labels2, ire2 = lib.predict_ae(ae2_trained, data_test, IREth2)
|
||||
lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2)
|
||||
lib.ire_plot('test', ire2, IREth2, 'AE2')
|
||||
```
|
||||
```
|
||||
i Labels IRE IREth
|
||||
0 [1.] [2.02] 0.4
|
||||
1 [1.] [1.84] 0.4
|
||||
2 [1.] [2.16] 0.4
|
||||
3 [1.] [2.17] 0.4
|
||||
Обнаружено 4.0 аномалий
|
||||
```
|
||||

|
||||
|
||||
### 11) Визуализировали элементы обучающей и тестовой выборки в областях пространства признаков, распознаваемых автокодировщиками AE1 и AE2.
|
||||
|
||||
@@ -128,6 +195,7 @@ lib.ire_plot('test', ire2, IREth2, 'AE2')
|
||||
# построение областей аппроксимации и точек тестового набора
|
||||
lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)
|
||||
```
|
||||

|
||||
|
||||
### 12) Результаты исследования занесли в таблицу:
|
||||
Табл. 1 Результаты задания №1
|
||||
@@ -184,7 +252,23 @@ train = np.loadtxt('data/cardio_train.txt', dtype=float)
|
||||
print('train:\n', train)
|
||||
print('train.shape:', np.shape(train))
|
||||
```
|
||||
|
||||
```
|
||||
train:
|
||||
[[ 0.00491231 0.69319077 -0.20364049 ... 0.23149795 -0.28978574
|
||||
-0.49329397]
|
||||
[ 0.11072935 -0.07990259 -0.20364049 ... 0.09356344 -0.25638541
|
||||
-0.49329397]
|
||||
[ 0.21654639 -0.27244466 -0.20364049 ... 0.02459619 -0.25638541
|
||||
1.1400175 ]
|
||||
...
|
||||
[ 0.85144861 -0.91998844 -0.20364049 ... 0.57633422 -0.65718941
|
||||
1.1400175 ]
|
||||
[ 0.85144861 -0.91998844 -0.20364049 ... 0.57633422 -0.62378908
|
||||
-0.49329397]
|
||||
[ 1.0630827 -0.51148142 -0.16958144 ... 0.57633422 -0.65718941
|
||||
-0.49329397]]
|
||||
train.shape: (1654, 21)
|
||||
```
|
||||
### 4) Создать и обучить автокодировщик с подходящей для данных архитектурой. Выбрать необходимое количество эпох обучения.
|
||||
|
||||
```python
|
||||
@@ -212,6 +296,7 @@ print("Время на обучение: ", time() - start)
|
||||
# Построение графика ошибки реконструкции
|
||||
lib.ire_plot('training', IRE3_v1, IREth3_v1, 'AE3_v1')
|
||||
```
|
||||

|
||||
|
||||
### 6) Сделать вывод о пригодности обученного автокодировщика для качественного обнаружения аномалий. Если порог ошибки реконструкции слишком велик, то подобрать подходящие параметры автокодировщика и повторить шаги (4) – (6).
|
||||
|
||||
@@ -238,6 +323,7 @@ print("Время на обучение: ", time() - start)
|
||||
# Построение графика ошибки реконструкции
|
||||
lib.ire_plot('training', IRE3_v2, IREth3_v2, 'AE3_v2')
|
||||
```
|
||||

|
||||
|
||||
### 7) Изучить и загрузить тестовую выборку Cardio.txt.
|
||||
|
||||
@@ -247,7 +333,23 @@ test = np.loadtxt('data/cardio_test.txt', dtype=float)
|
||||
print('\n test:\n', test)
|
||||
print('test.shape:', np.shape(test))
|
||||
```
|
||||
|
||||
```
|
||||
test:
|
||||
[[ 0.21654639 -0.65465178 -0.20364049 ... -2.0444214 4.987467
|
||||
-0.49329397]
|
||||
[ 0.21654639 -0.5653379 -0.20364049 ... -2.1133887 6.490482
|
||||
-0.49329397]
|
||||
[-0.3125388 -0.91998844 6.9653692 ... -1.1478471 3.9186563
|
||||
-0.49329397]
|
||||
...
|
||||
[-0.41835583 -0.91998844 -0.16463485 ... -1.4926834 0.24461959
|
||||
-0.49329397]
|
||||
[-0.41835583 -0.91998844 -0.15093411 ... -1.4237162 0.14441859
|
||||
-0.49329397]
|
||||
[-0.41835583 -0.91998844 -0.20364049 ... -1.2857816 3.5846529
|
||||
-0.49329397]]
|
||||
test.shape: (109, 21)
|
||||
```
|
||||
### 8) Подать тестовую выборку на вход обученного автокодировщика для обнаружения аномалий. Вывести график ошибки реконструкции элементов тестовой выборки относительно порога.
|
||||
|
||||
```python
|
||||
@@ -259,6 +361,7 @@ predicted_labels3_v1, ire3_v1 = lib.predict_ae(ae3_v1_trained, test, IREth3_v1)
|
||||
# Построение графика ошибки реконструкции
|
||||
lib.ire_plot('test', ire3_v1, IREth3_v1, 'AE3_v1')
|
||||
```
|
||||

|
||||
|
||||
```python
|
||||
# тестирование АE3
|
||||
@@ -269,6 +372,7 @@ predicted_labels3_v2, ire3_v2 = lib.predict_ae(ae3_v2_trained, test, IREth3_v2)
|
||||
# Построение графика ошибки реконструкции
|
||||
lib.ire_plot('test', ire3_v2, IREth3_v2, 'AE3_v2')
|
||||
```
|
||||

|
||||
|
||||
```python
|
||||
# тестирование АE2
|
||||
|
||||
Ссылка в новой задаче
Block a user