Сравнить коммиты
3 Коммитов
| Автор | SHA1 | Дата |
|---|---|---|
|
|
4ea5a02099 | 3 недель назад |
|
|
dee57ad5f2 | 3 недель назад |
|
|
40fb6b5620 | 3 недель назад |
|
После Ширина: | Высота: | Размер: 3.9 KiB |
|
После Ширина: | Высота: | Размер: 3.9 KiB |
|
После Ширина: | Высота: | Размер: 854 B |
|
После Ширина: | Высота: | Размер: 883 B |
|
После Ширина: | Высота: | Размер: 5.6 KiB |
|
После Ширина: | Высота: | Размер: 19 KiB |
|
После Ширина: | Высота: | Размер: 30 KiB |
|
После Ширина: | Высота: | Размер: 20 KiB |
|
После Ширина: | Высота: | Размер: 29 KiB |
|
После Ширина: | Высота: | Размер: 18 KiB |
|
После Ширина: | Высота: | Размер: 18 KiB |
|
После Ширина: | Высота: | Размер: 8.6 KiB |
|
После Ширина: | Высота: | Размер: 8.7 KiB |
|
После Ширина: | Высота: | Размер: 8.9 KiB |
|
После Ширина: | Высота: | Размер: 8.7 KiB |
|
После Ширина: | Высота: | Размер: 13 KiB |
|
После Ширина: | Высота: | Размер: 24 KiB |
|
После Ширина: | Высота: | Размер: 16 KiB |
|
После Ширина: | Высота: | Размер: 28 KiB |
|
После Ширина: | Высота: | Размер: 16 KiB |
|
После Ширина: | Высота: | Размер: 28 KiB |
|
После Ширина: | Высота: | Размер: 16 KiB |
|
После Ширина: | Высота: | Размер: 27 KiB |
@ -0,0 +1,508 @@
|
||||
# Отчёт по лабораторной работе №1
|
||||
|
||||
**Кобзев Александр, Кирсанов Егор — А-01-22**
|
||||
|
||||
## 1. В среде Google Colab создан новый блокнот. Импортированы необходимые библиотеки и модули.
|
||||
|
||||
```python
|
||||
from google.colab import drive
|
||||
drive.mount('/content/drive')
|
||||
```
|
||||
|
||||
```python
|
||||
from tensorflow import keras
|
||||
import matplotlib.pyplot as plt
|
||||
import numpy as np
|
||||
import sklearn
|
||||
from keras.datasets import mnist
|
||||
from sklearn.model_selection import train_test_split
|
||||
from tensorflow.keras.utils import to_categorical
|
||||
from keras.models import Sequential
|
||||
from keras.layers import Dense
|
||||
from PIL import Image
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2. Загрузили набора данных MNIST с изображениями рукописных цифр.
|
||||
|
||||
```python
|
||||
(X_train, y_train), (X_test, y_test) = mnist.load_data()
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 3. Разбили данные на обучающую и тестовую выборки 60 000:10 000.
|
||||
|
||||
При объединении исходных выборок и последующем разбиении был использован параметр `random_state = 4*k - 1`, где *k* – номер бригады (k = 10). Такой фиксированный seed обеспечивает воспроизводимость разбиения.
|
||||
|
||||
```python
|
||||
# объединяем исходные обучающие и тестовые данные в один массив
|
||||
X = np.concatenate((X_train, X_test))
|
||||
y = np.concatenate((y_train, y_test))
|
||||
|
||||
# выполняем разбиение на обучающую (60000) и тестовую (10000) выборки
|
||||
X_train, X_test, y_train, y_test = train_test_split(
|
||||
X, y, train_size=60000, test_size=10000, random_state=4*10 - 1
|
||||
)
|
||||
|
||||
# вывод размерностей полученных массивов
|
||||
print('Shape of X train:', X_train.shape)
|
||||
print('Shape of y test:', y_test.shape)
|
||||
```
|
||||
|
||||
```
|
||||
Shape of X train: (60000, 28, 28)
|
||||
Shape of y train: (60000,)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 4. Вывели первые 4 элемента обучающих данных (изображения и метки цифр).
|
||||
|
||||
```python
|
||||
# вывод изображения
|
||||
fig, axes = plt.subplots(1, 4, figsize=(10, 3))
|
||||
for i in range(4):
|
||||
axes[i].imshow(X_train[i], cmap=plt.get_cmap('gray'))
|
||||
axes[i].set_title(y_train[i])
|
||||
axes[i].axis('off')
|
||||
plt.show()
|
||||
```
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 5. Провели предобработку данных: привели обучающие и тестовые данные к формату, пригодному для обучения нейронной сети. Входные данные должны принимать значения от 0 до 1, метки цифр должны быть закодированы по принципу «one-hot encoding». Вывели размерности предобработанных обучающих и тестовых массивов данных.
|
||||
|
||||
```python
|
||||
# развернем каждое изображение 28*28 в вектор 784
|
||||
num_pixels = X_train.shape[1] * X_train.shape[2]
|
||||
X_train = X_train.reshape(X_train.shape[0], num_pixels) / 255.0
|
||||
X_test = X_test.reshape(X_test.shape[0], num_pixels) / 255.0
|
||||
print('Shape of transformed X train:', X_train.shape)
|
||||
```
|
||||
|
||||
```
|
||||
Shape of transformed X train: (60000, 784)
|
||||
```
|
||||
|
||||
```python
|
||||
# переведем метки в one-hot
|
||||
from tensorflow.keras.utils import to_categorical
|
||||
y_train = to_categorical(y_train)
|
||||
y_test = to_categorical(y_test)
|
||||
```
|
||||
|
||||
```
|
||||
Shape of transformed y train: (60000, 10)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 6. Реализовали и обученили однослойную нейронную сеть.
|
||||
|
||||
**Архитектура и параметры:**
|
||||
- количество скрытых слоёв: 0
|
||||
- функция активации выходного слоя: `softmax`
|
||||
- функция ошибки: `categorical_crossentropy`
|
||||
- алгоритм обучения: `sgd`
|
||||
- метрика качества: `accuracy`
|
||||
- количество эпох: 50
|
||||
- доля валидационных данных от обучающих: 0.1
|
||||
|
||||
```python
|
||||
model = Sequential()
|
||||
model.add(Dense(units=10, input_dim=num_pixels, activation='softmax'))
|
||||
model.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
||||
model.summary()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
#обучение
|
||||
H1 = model.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
|
||||
```
|
||||
|
||||
```python
|
||||
# вывод графика ошибки по эпохам
|
||||
plt.plot(H1.history['loss'])
|
||||
plt.plot(H1.history['val_loss'])
|
||||
plt.grid()
|
||||
plt.xlabel('Epochs')
|
||||
plt.ylabel('loss')
|
||||
plt.legend(['train_loss', 'val_loss'])
|
||||
plt.title('Loss by epochs')
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
---
|
||||
|
||||
## 7. Применили обученную модель к тестовым данным.
|
||||
|
||||
```python
|
||||
# Оценка качества работы модели на тестовых данных
|
||||
scores = model.evaluate(X_test, y_test)
|
||||
print('Loss on test data:', scores[0])
|
||||
print('Accuracy on test data:', scores[1])
|
||||
```
|
||||
|
||||
```
|
||||
Loss on test data: 0.32417795062065125
|
||||
Accuracy on test data: 0.9110999703407288
|
||||
```
|
||||
|
||||
## 8. Добавили в модель один скрытый слой и провели обучение и тестирование (повторить п. 6–7) при 100, 300, 500 нейронах в скрытом слое. По метрике качества классификации на тестовых данных выбрали наилучшее количество нейронов в скрытом слое. В качестве функции активации нейронов в скрытом слое использовали функцию sigmoid.
|
||||
|
||||
### При 100 нейронах:
|
||||
```python
|
||||
model_100 = Sequential ()
|
||||
model_100.add(Dense(units=100,input_dim=num_pixels, activation='sigmoid'))
|
||||
model_100.add(Dense(units=num_classes, activation='softmax'))
|
||||
model_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
||||
print(model_100.summary())
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
#обучение
|
||||
H_100 = model_100.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
|
||||
```
|
||||
|
||||
```python
|
||||
# вывод графика ошибки по эпохам
|
||||
plt.plot(H_100.history['loss'])
|
||||
plt.plot(H_100.history['val_loss'])
|
||||
plt.grid()
|
||||
plt.xlabel('Epochs')
|
||||
plt.ylabel('loss')
|
||||
plt.legend(['train_loss', 'val_loss'])
|
||||
plt.title('Loss by epochs')
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
# Оценка качества работы модели на тестовых данных
|
||||
scores = model_100.evaluate(X_test, y_test)
|
||||
print('Loss on test data:', scores[0])
|
||||
print('Accuracy on test data:', scores[1])
|
||||
```
|
||||
|
||||
```
|
||||
Loss on test data: 0.2998492121696472
|
||||
Accuracy on test data: 0.9138000011444092
|
||||
```
|
||||
|
||||
### При 300 нейронах:
|
||||
```python
|
||||
model_300 = Sequential ()
|
||||
model_300.add(Dense(units=300,input_dim=num_pixels, activation='sigmoid'))
|
||||
model_300.add(Dense(units=num_classes, activation='softmax'))
|
||||
model_300.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
||||
print(model_300.summary())
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
H_300 = model_300.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
|
||||
```
|
||||
|
||||
```python
|
||||
# вывод графика ошибки по эпохам
|
||||
plt.plot(H_300.history['loss'])
|
||||
plt.plot(H_300.history['val_loss'])
|
||||
plt.grid()
|
||||
plt.xlabel('Epochs')
|
||||
plt.ylabel('loss')
|
||||
plt.legend(['train_loss', 'val_loss'])
|
||||
plt.title('Loss by epochs')
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
# Оценка качества работы модели на тестовых данных
|
||||
scores = model_300.evaluate(X_test, y_test)
|
||||
print('Loss on test data:', scores[0])
|
||||
print('Accuracy on test data:', scores[1])
|
||||
```
|
||||
|
||||
```
|
||||
Loss on test data: 0.31299835443496704
|
||||
Accuracy on test data: 0.9107999801635742
|
||||
```
|
||||
|
||||
### При 500 нейронах:
|
||||
```python
|
||||
model_500 = Sequential()
|
||||
model_500.add(Dense(units=500, input_dim=num_pixels, activation='sigmoid'))
|
||||
model_500.add(Dense(units=num_classes, activation='softmax'))
|
||||
model_500.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
||||
print(model_500.summary())
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
```python
|
||||
H_500 = model_500.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
|
||||
```
|
||||
|
||||
```python
|
||||
# вывод графика ошибки по эпохам
|
||||
plt.plot(H_500.history['loss'])
|
||||
plt.plot(H_500.history['val_loss'])
|
||||
plt.grid()
|
||||
plt.xlabel('Epochs')
|
||||
plt.ylabel('loss')
|
||||
plt.legend(['train_loss', 'val_loss'])
|
||||
plt.title('Loss by epochs')
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
# Оценка качества работы модели на тестовых данных
|
||||
scores = model_500.evaluate(X_test, y_test)
|
||||
print('Loss on test data:', scores[0])
|
||||
print('Accuracy on test data:', scores[1])
|
||||
```
|
||||
|
||||
```
|
||||
Loss on test data: 0.31795090436935425
|
||||
Accuracy on test data: 0.909600019454956
|
||||
```
|
||||
|
||||
Мы видим что лучший результат показала модель со 100 нейронами в скрытом слое(Accuracy = 0.9138).
|
||||
|
||||
## 9. Добавили в наилучшую архитектуру, определенную в п. 8, второй скрытый слой и провели обучение и тестирование при 50 и 100 нейронах во втором скрытом слое. В качестве функции активации нейронов в скрытом слое использовали функцию sigmoid.
|
||||
|
||||
### При 50 нейронах в 2-м слое:
|
||||
```python
|
||||
model_100_50 = Sequential()
|
||||
model_100_50.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))
|
||||
model_100_50.add(Dense(units=50, activation='sigmoid'))
|
||||
model_100_50.add(Dense(units=num_classes, activation='softmax'))
|
||||
model_100_50.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
||||
print(model_100_50.summary())
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
H_100_50 = model_100_50.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
|
||||
```
|
||||
|
||||
```python
|
||||
# вывод графика ошибки по эпохам
|
||||
plt.plot(H_100_50.history['loss'])
|
||||
plt.plot(H_100_50.history['val_loss'])
|
||||
plt.grid()
|
||||
plt.xlabel('Epochs')
|
||||
plt.ylabel('loss')
|
||||
plt.legend(['train_loss', 'val_loss'])
|
||||
plt.title('Loss by epochs')
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
# Оценка качества работы модели на тестовых данных
|
||||
scores = model_100_50.evaluate(X_test, y_test)
|
||||
print('Loss on test data:', scores[0])
|
||||
print('Accuracy on test data:', scores[1])
|
||||
```
|
||||
|
||||
```
|
||||
Loss on test data: 0.3216394782066345
|
||||
Accuracy on test data: 0.9085999727249146
|
||||
```
|
||||
|
||||
### При 100 нейронах во 2-м слое:\
|
||||
|
||||
```python
|
||||
model_100_100 = Sequential()
|
||||
model_100_100.add(Dense(units=100, input_dim=num_pixels, activation='sigmoid'))
|
||||
model_100_100.add(Dense(units=100, activation='sigmoid'))
|
||||
model_100_100.add(Dense(units=num_classes, activation='softmax'))
|
||||
model_100_100.compile(loss='categorical_crossentropy', optimizer='sgd', metrics=['accuracy'])
|
||||
print(model_100_100.summary())
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
H_100_100 = model_100_100.fit(X_train, y_train, batch_size=256, validation_split=0.1, epochs=150)
|
||||
```
|
||||
|
||||
```python
|
||||
# вывод графика ошибки по эпохам
|
||||
plt.plot(H_100_100.history['loss'])
|
||||
plt.plot(H_100_100.history['val_loss'])
|
||||
plt.grid()
|
||||
plt.xlabel('Epochs')
|
||||
plt.ylabel('loss')
|
||||
plt.legend(['train_loss', 'val_loss'])
|
||||
plt.title('Loss by epochs')
|
||||
plt.show()
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
# Оценка качества работы модели на тестовых данных
|
||||
scores = model.evaluate(X_test, y_test)
|
||||
print('Loss on test data:', scores[0])
|
||||
print('Accuracy on test data:', scores[1])
|
||||
```
|
||||
|
||||
```
|
||||
Loss on test data: 0.31788304448127747
|
||||
Accuracy on test data: 0.9128000140190125
|
||||
```
|
||||
|
||||
## 10. Сравнили качество классификации на тестовых данных всех построенных моделей. Сделали выводы.
|
||||
|
||||
| Кол-во слоёв | Нейронов в 1-м | Нейронов во 2-м | Accuracy |
|
||||
|---------------|----------------|-----------------|-----------|
|
||||
| 0 | – | – | 0.9111 |
|
||||
| 1 | 100 | – | 0.9138 |
|
||||
| 1 | 300 | – | 0.9108 |
|
||||
| 1 | 500 | – | 0.9096 |
|
||||
| 2 | 100 | 50 | 0.9086 |
|
||||
| 2 | 100 | 100 | 0.9128 |
|
||||
|
||||
**Вывод:** наилучшей оказалась архитектура с одним скрытым слоем и 100 нейронами в нём. Увеличение числа нейронов в скрытом слое или добавление второго слоя не улучшило качество классификации, а в некоторых случаях даже ухудшило его. Вероятно, это связано с переобучением модели из-за избыточного количества параметров при относительно небольшом объёме обучающих данных.
|
||||
|
||||
---
|
||||
|
||||
## 11. Сохранили наилучшую модель на диск.
|
||||
|
||||
```python
|
||||
model_100.save("/content/drive/MyDrive/Colab Notebooks/best_model_100.keras")
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 12. Для нейронной сети с наилучшей архитектурой вывели 2 тестовых изображения и истинные метки, а также предсказанные моделью метки.
|
||||
|
||||
```python
|
||||
n = 333
|
||||
result = model_100.predict(X_test[n:n+1])
|
||||
print('NNoutput:',result)
|
||||
plt.imshow(X_test[n].reshape(28,28),cmap=plt.get_cmap('gray'))
|
||||
plt.show()
|
||||
print('Realmark:',str(np.argmax(y_test[n])))
|
||||
print('NNanswer:',str(np.argmax(result)))
|
||||
```
|
||||

|
||||
|
||||
```python
|
||||
n = 234
|
||||
result = model_100.predict(X_test[n:n+1])
|
||||
print('NNoutput:',result)
|
||||
plt.imshow(X_test[n].reshape(28,28),cmap=plt.get_cmap('gray'))
|
||||
plt.show()
|
||||
print('Realmark:',str(np.argmax(y_test[n])))
|
||||
print('NNanswer:',str(np.argmax(result)))
|
||||
```
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 13. Создали собственные изображения рукописных цифр, подобное представленным в наборе MNIST. Цифру выбрали как остаток от деления на 10 числа своего дня рождения (14 июля → 14 mod 10 = 4, 7 ноября → 7 mod 10 = 7). Сохранили изображения. Загрузили, предобработали и подали на вход обученной нейронной сети собственные изображения. Вывели изображения и результаты распознавания.
|
||||
|
||||
### Для 7:
|
||||
|
||||

|
||||
|
||||
```python
|
||||
#вывод собственного изображения
|
||||
plt.imshow(test_img,cmap=plt.get_cmap('gray'))
|
||||
plt.show()
|
||||
#предобработка
|
||||
test_img=test_img/255
|
||||
test_img=test_img.reshape(1,num_pixels)
|
||||
#распознавание
|
||||
result=model_100.predict(test_img)
|
||||
print('I think it\'s',np.argmax(result))
|
||||
```
|
||||

|
||||
|
||||
### Для 4:
|
||||
|
||||

|
||||
|
||||
```python
|
||||
from PIL import Image
|
||||
file_data_4=Image.open('/content/drive/MyDrive/Colab Notebooks/IS_lab_4.png')
|
||||
file_data_4=file_data_4.convert('L')
|
||||
test_img_4=np.array(file_data_4)
|
||||
#вывод собственного изображения
|
||||
plt.imshow(test_img_4,cmap=plt.get_cmap('gray'))
|
||||
plt.show()
|
||||
#предобработка
|
||||
test_img_4=test_img_4/255
|
||||
test_img_4=test_img_4.reshape(1,num_pixels)
|
||||
#распознавание
|
||||
result=model_100.predict(test_img_4)
|
||||
print('I think it\'s',np.argmax(result))
|
||||
```
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 14. Создать копию собственного изображения, отличающуюся от оригинала поворотом на 90 градусов в любую сторону. Сохранили изображения. Загрузили, предобработали и подали на вход обученной нейронной сети измененные изображения. Вывели изображения и результаты распознавания. Сделали выводы по результатам эксперимента.
|
||||
|
||||
```python
|
||||
from PIL import Image
|
||||
file_data=Image.open('/content/drive/MyDrive/Colab Notebooks/IS_lab_7_90.png')
|
||||
file_data=file_data.convert('L')
|
||||
test_img=np.array(file_data)
|
||||
#вывод собственного изображения
|
||||
plt.imshow(test_img,cmap=plt.get_cmap('gray'))
|
||||
plt.show()
|
||||
#предобработка
|
||||
test_img=test_img/255
|
||||
test_img=test_img.reshape(1,num_pixels)
|
||||
#распознавание
|
||||
result=model_100.predict(test_img)
|
||||
print('Ithinkit\'s',np.argmax(result))
|
||||
```
|
||||
|
||||

|
||||
|
||||
```python
|
||||
from PIL import Image
|
||||
file_data_4=Image.open('/content/drive/MyDrive/Colab Notebooks/IS_lab_4_90.png')
|
||||
file_data_4=file_data_4.convert('L')
|
||||
test_img_4=np.array(file_data_4)
|
||||
#выводсобственногоизображения
|
||||
plt.imshow(test_img_4,cmap=plt.get_cmap('gray'))
|
||||
plt.show()
|
||||
#предобработка
|
||||
test_img_4=test_img_4/255
|
||||
test_img_4=test_img_4.reshape(1,num_pixels)
|
||||
#распознавание
|
||||
result=model_100.predict(test_img_4)
|
||||
print('Ithinkit\'s',np.argmax(result))
|
||||
```
|
||||
|
||||

|
||||
|
||||
**Вывод:** модель неустойчива к повороту изображений, так как не обучалась на повернутых данных.
|
||||
|
||||
---
|
||||
|
||||
## Заключение
|
||||
Изучены принципы построения и обучения нейронных сетей в Keras на примере распознавания цифр MNIST. Лучшая точность достигнута простой моделью с одним скрытым слоем из 100 нейронов. При усложнении архитектуры наблюдается переобучение. Сеть корректно классифицирует собственные изображения, но ошибается на повернутых.
|
||||
@ -0,0 +1,4 @@
|
||||
10.5 9.5
|
||||
9.0 10.2
|
||||
9.6 10.5
|
||||
9.0 9.0
|
||||
|
После Ширина: | Высота: | Размер: 43 KiB |
|
После Ширина: | Высота: | Размер: 21 KiB |
|
После Ширина: | Высота: | Размер: 29 KiB |
|
После Ширина: | Высота: | Размер: 40 KiB |
|
После Ширина: | Высота: | Размер: 22 KiB |
|
После Ширина: | Высота: | Размер: 86 KiB |
|
После Ширина: | Высота: | Размер: 89 KiB |
|
После Ширина: | Высота: | Размер: 70 KiB |
|
После Ширина: | Высота: | Размер: 43 KiB |
|
После Ширина: | Высота: | Размер: 108 KiB |
|
После Ширина: | Высота: | Размер: 34 KiB |
|
После Ширина: | Высота: | Размер: 90 KiB |
|
После Ширина: | Высота: | Размер: 104 KiB |
|
После Ширина: | Высота: | Размер: 32 KiB |
|
После Ширина: | Высота: | Размер: 66 KiB |
|
После Ширина: | Высота: | Размер: 78 KiB |
@ -0,0 +1,100 @@
|
||||
8.0000000e+00 1.1000000e+01 8.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 4.0000000e+00 1.0000000e+01 4.0000000e+00 4.0000000e+00 3.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 1.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 7.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 7.0000000e+00 4.0000000e+00 9.0000000e+00
|
||||
4.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 5.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 4.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 9.0000000e+00 9.0000000e+00 8.0000000e+00 1.0000000e+01 4.0000000e+00 3.0000000e+00 6.0000000e+00 8.0000000e+00 9.0000000e+00 5.0000000e+00 1.3000000e+01 8.0000000e+00 8.0000000e+00
|
||||
3.0000000e+00 3.0000000e+00 5.0000000e+00 2.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 6.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 7.0000000e+00 1.0000000e+00 9.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 2.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00
|
||||
2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 1.0000000e+01 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 9.0000000e+00
|
||||
3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 9.0000000e+00 1.4000000e+01 9.0000000e+00 8.0000000e+00 6.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 1.0000000e+01 1.1000000e+01 1.2000000e+01 5.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00
|
||||
4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 1.1000000e+01 8.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 4.0000000e+00 1.0000000e+01 4.0000000e+00 4.0000000e+00
|
||||
2.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 7.0000000e+00 1.0000000e+01 9.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+01 2.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 6.0000000e+00 6.0000000e+00 3.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 3.0000000e+00 1.3000000e+01 9.0000000e+00 8.0000000e+00 3.0000000e+00 1.0000000e+01 3.0000000e+00 8.0000000e+00
|
||||
6.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 9.0000000e+00 9.0000000e+00 4.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01 4.0000000e+00 5.0000000e+00 3.0000000e+00 9.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00
|
||||
0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 7.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 5.0000000e+00 9.0000000e+00 5.0000000e+00 9.0000000e+00 6.0000000e+00 5.0000000e+00
|
||||
3.0000000e+00 1.0000000e+01 4.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 2.0000000e+00 2.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 8.0000000e+00
|
||||
4.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 4.0000000e+00 1.0000000e+01 7.0000000e+00 6.0000000e+00 3.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00
|
||||
3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 1.1000000e+01 1.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 4.0000000e+00 1.1000000e+01 2.0000000e+00 6.0000000e+00 1.1000000e+01 1.0000000e+01 5.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 5.0000000e+00
|
||||
6.0000000e+00 7.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+01 1.0000000e+01 1.1000000e+01 8.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00
|
||||
7.0000000e+00 1.5000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 9.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 1.3000000e+01 3.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 9.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 7.0000000e+00 4.0000000e+00
|
||||
5.0000000e+00 1.1000000e+01 7.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 9.0000000e+00 5.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 3.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00
|
||||
5.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 3.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 1.0000000e+00 4.0000000e+00 1.3000000e+01 3.0000000e+00 2.0000000e+00 1.0000000e+01 1.1000000e+01 7.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00
|
||||
1.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 1.1000000e+01 6.0000000e+00 3.0000000e+00 4.0000000e+00 9.0000000e+00 3.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00
|
||||
4.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 1.1000000e+01 7.0000000e+00 9.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 8.0000000e+00
|
||||
2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 6.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 2.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 3.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+01 4.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 3.0000000e+00 8.0000000e+00
|
||||
2.0000000e+00 3.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+00 8.0000000e+00 1.4000000e+01 0.0000000e+00 6.0000000e+00 6.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 1.1000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 5.0000000e+00 4.0000000e+00 5.0000000e+00 1.4000000e+01 4.0000000e+00 1.0000000e+01 0.0000000e+00 7.0000000e+00 1.0000000e+00 6.0000000e+00
|
||||
4.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01 1.1000000e+01 2.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01 7.0000000e+00 1.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 5.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00
|
||||
4.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 9.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 3.0000000e+00
|
||||
4.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 1.0000000e+01 4.0000000e+00 5.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 1.1000000e+01 5.0000000e+00 6.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00
|
||||
1.0000000e+00 7.0000000e+00 0.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 9.0000000e+00 7.0000000e+00 3.0000000e+00 1.0000000e+01 1.0000000e+00 8.0000000e+00
|
||||
2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+00 7.0000000e+00 1.2000000e+01 0.0000000e+00 5.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01 6.0000000e+00 7.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 6.0000000e+00 1.0000000e+01 3.0000000e+00 5.0000000e+00
|
||||
2.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 0.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00
|
||||
7.0000000e+00 1.1000000e+01 1.1000000e+01 8.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 3.0000000e+00 6.0000000e+00 9.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01
|
||||
9.0000000e+00 1.1000000e+01 7.0000000e+00 6.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 3.0000000e+00 9.0000000e+00 1.3000000e+01 7.0000000e+00 5.0000000e+00 2.0000000e+00 1.0000000e+01 3.0000000e+00 5.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 1.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 3.0000000e+00 9.0000000e+00 1.1000000e+01 7.0000000e+00 2.0000000e+00 1.0000000e+01 1.0000000e+00 8.0000000e+00
|
||||
1.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 9.0000000e+00 7.0000000e+00 5.0000000e+00 3.0000000e+00 9.0000000e+00 3.0000000e+00 7.0000000e+00 1.1000000e+01 1.2000000e+01 1.2000000e+01 4.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00
|
||||
6.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 6.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.2000000e+01 4.0000000e+00 6.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00
|
||||
1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 0.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00
|
||||
1.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 5.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 2.0000000e+00 2.0000000e+00 4.0000000e+00 1.0000000e+00 6.0000000e+00 1.0000000e+00 5.0000000e+00
|
||||
5.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+01 1.0000000e+01 1.0000000e+01 5.0000000e+00 6.0000000e+00 2.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 1.1000000e+01 1.0000000e+01
|
||||
4.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00 9.0000000e+00 3.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00 5.0000000e+00 1.1000000e+01
|
||||
3.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 1.0000000e+00 8.0000000e+00 1.5000000e+01 1.0000000e+00 5.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 6.0000000e+00 2.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 1.3000000e+01 0.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00
|
||||
1.0000000e+00 1.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 3.0000000e+00 3.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 6.0000000e+00 6.0000000e+00 0.0000000e+00 1.0000000e+00 5.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
7.0000000e+00 8.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 4.0000000e+00 9.0000000e+00 1.0000000e+01 9.0000000e+00 7.0000000e+00 9.0000000e+00 1.0000000e+01 8.0000000e+00 1.1000000e+01 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00
|
||||
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 9.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 1.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 5.0000000e+00 2.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00
|
||||
5.0000000e+00 6.0000000e+00 8.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 5.0000000e+00 9.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00
|
||||
3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 1.0000000e+01 5.0000000e+00 4.0000000e+00 1.1000000e+01 4.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 8.0000000e+00
|
||||
5.0000000e+00 9.0000000e+00 5.0000000e+00 6.0000000e+00 4.0000000e+00 5.0000000e+00 1.2000000e+01 4.0000000e+00 6.0000000e+00 1.1000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00 1.2000000e+01 1.3000000e+01 9.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 4.0000000e+00 1.1000000e+01 4.0000000e+00 5.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00
|
||||
5.0000000e+00 9.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 3.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 2.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+01
|
||||
1.0000000e+00 4.0000000e+00 0.0000000e+00 6.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 1.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
8.0000000e+00 1.3000000e+01 7.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00 1.3000000e+01 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 5.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 5.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 1.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
2.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 1.0000000e+00 9.0000000e+00 1.5000000e+01 1.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 9.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 1.0000000e+00 4.0000000e+00 2.0000000e+00 2.0000000e+00 6.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 1.0000000e+01 3.0000000e+00 8.0000000e+00 4.0000000e+00 9.0000000e+00
|
||||
2.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 1.4000000e+01 0.0000000e+00 6.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 9.0000000e+00
|
||||
5.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+01 6.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 1.0000000e+01 4.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.4000000e+01 2.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
7.0000000e+00 1.0000000e+01 6.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 9.0000000e+00 2.0000000e+00 7.0000000e+00 1.1000000e+01 7.0000000e+00 7.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 4.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 1.0000000e+00 8.0000000e+00 1.0000000e+01 9.0000000e+00 8.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00
|
||||
0.0000000e+00 3.0000000e+00 0.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 1.0000000e+01 2.0000000e+00 9.0000000e+00 4.0000000e+00 8.0000000e+00
|
||||
0.0000000e+00 3.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 9.0000000e+00 7.0000000e+00 2.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 1.0000000e+00 0.0000000e+00 1.0000000e+00 6.0000000e+00 6.0000000e+00 0.0000000e+00 0.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 9.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 1.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 1.4000000e+01 2.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 2.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00
|
||||
6.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 3.0000000e+00 7.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00 3.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00
|
||||
6.0000000e+00 9.0000000e+00 9.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 2.0000000e+00 4.0000000e+00 9.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00 2.0000000e+00 8.0000000e+00 2.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 1.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 7.0000000e+00
|
||||
3.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 2.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 1.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 1.0000000e+01 4.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 7.0000000e+00 9.0000000e+00 1.3000000e+01 3.0000000e+00 4.0000000e+00
|
||||
4.0000000e+00 4.0000000e+00 6.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+01 6.0000000e+00 3.0000000e+00 4.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 5.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 1.0000000e+00 6.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 4.0000000e+00 1.0000000e+01
|
||||
6.0000000e+00 1.2000000e+01 7.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 8.0000000e+00 1.0000000e+00 2.0000000e+00 8.0000000e+00 8.0000000e+00 1.5000000e+01 1.0000000e+01 8.0000000e+00 5.0000000e+00 1.2000000e+01 5.0000000e+00 2.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
2.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+00 2.0000000e+00 5.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+01 1.0000000e+01 1.0000000e+01 4.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 3.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 2.0000000e+00 5.0000000e+00 1.2000000e+01 4.0000000e+00 6.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 4.0000000e+00
|
||||
1.0000000e+00 1.0000000e+01 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 2.0000000e+00 0.0000000e+00 1.0000000e+00 4.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 3.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00 5.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00
|
||||
6.0000000e+00 7.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 5.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 2.0000000e+00 4.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 5.0000000e+00 1.0000000e+01 3.0000000e+00 5.0000000e+00 1.0000000e+01 9.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 6.0000000e+00
|
||||
5.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 4.0000000e+00 8.0000000e+00 7.0000000e+00 1.3000000e+01 2.0000000e+00 6.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 5.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 9.0000000e+00
|
||||
6.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 7.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 1.0000000e+01 8.0000000e+00 1.0000000e+01 1.2000000e+01 8.0000000e+00 9.0000000e+00 8.0000000e+00 5.0000000e+00 3.0000000e+00 3.0000000e+00 1.1000000e+01 2.0000000e+00 3.0000000e+00 1.1000000e+01 1.1000000e+01 8.0000000e+00 7.0000000e+00 1.1000000e+01 0.0000000e+00 7.0000000e+00
|
||||
6.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 3.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 9.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 1.0000000e+00 1.1000000e+01 3.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 5.0000000e+00 4.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 6.0000000e+00
|
||||
5.0000000e+00 8.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 1.0000000e+01 5.0000000e+00 3.0000000e+00 5.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 6.0000000e+00 2.0000000e+00 9.0000000e+00 3.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 9.0000000e+00 7.0000000e+00 8.0000000e+00
|
||||
1.0000000e+00 4.0000000e+00 0.0000000e+00 5.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+00 3.0000000e+00 8.0000000e+00 1.2000000e+01 8.0000000e+00 1.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00
|
||||
4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 9.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 1.2000000e+01 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+01 2.0000000e+00 9.0000000e+00 2.0000000e+00 6.0000000e+00 4.0000000e+00 8.0000000e+00
|
||||
2.0000000e+00 7.0000000e+00 3.0000000e+00 5.0000000e+00 2.0000000e+00 7.0000000e+00 9.0000000e+00 0.0000000e+00 6.0000000e+00 1.3000000e+01 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 1.0000000e+00 3.0000000e+00 2.0000000e+00 2.0000000e+00 1.0000000e+00 5.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 1.2000000e+01 8.0000000e+00 1.0000000e+01 1.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00
|
||||
8.0000000e+00 1.0000000e+01 8.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 1.0000000e+01 2.0000000e+00 8.0000000e+00 1.1000000e+01 9.0000000e+00 5.0000000e+00 3.0000000e+00 1.0000000e+01 5.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 5.0000000e+00 0.0000000e+00 7.0000000e+00 1.0000000e+01 1.0000000e+00 3.0000000e+00 7.0000000e+00 1.2000000e+01 8.0000000e+00 1.0000000e+00 1.1000000e+01 0.0000000e+00 8.0000000e+00
|
||||
5.0000000e+00 1.0000000e+01 8.0000000e+00 7.0000000e+00 7.0000000e+00 9.0000000e+00 6.0000000e+00 2.0000000e+00 4.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 1.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 8.0000000e+00 7.0000000e+00 4.0000000e+00 1.0000000e+00 7.0000000e+00 8.0000000e+00 1.0000000e+01 2.0000000e+00 9.0000000e+00 3.0000000e+00 9.0000000e+00
|
||||
4.0000000e+00 4.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 6.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 1.0000000e+01 9.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 2.0000000e+00 9.0000000e+00 2.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 2.0000000e+00 9.0000000e+00 1.1000000e+01 6.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 5.0000000e+00 7.0000000e+00
|
||||
3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.4000000e+01 6.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 9.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 1.3000000e+01 7.0000000e+00 2.0000000e+00 1.2000000e+01 5.0000000e+00 2.0000000e+00 1.0000000e+00 1.1000000e+01 4.0000000e+00 8.0000000e+00
|
||||
4.0000000e+00 6.0000000e+00 5.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 3.0000000e+00 6.0000000e+00 4.0000000e+00 4.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 2.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01
|
||||
4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 8.0000000e+00 1.1000000e+01 7.0000000e+00 3.0000000e+00 4.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 2.0000000e+00 9.0000000e+00 4.0000000e+00 9.0000000e+00
|
||||
4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 1.1000000e+01 5.0000000e+00 1.0000000e+00 5.0000000e+00 8.0000000e+00 1.2000000e+01 2.0000000e+00 1.0000000e+01 5.0000000e+00 8.0000000e+00
|
||||
1.0000000e+00 1.0000000e+00 1.0000000e+00 2.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00 9.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 1.0000000e+01 9.0000000e+00 4.0000000e+00
|
||||
1.0000000e+00 4.0000000e+00 2.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 3.0000000e+00 5.0000000e+00 1.3000000e+01 7.0000000e+00 5.0000000e+00 1.0000000e+00 1.0000000e+01 2.0000000e+00 7.0000000e+00
|
||||
2.0000000e+00 5.0000000e+00 3.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 1.2000000e+01 3.0000000e+00 6.0000000e+00 7.0000000e+00 1.1000000e+01 8.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00 4.0000000e+00 1.0000000e+01 5.0000000e+00 7.0000000e+00 4.0000000e+00 7.0000000e+00 8.0000000e+00 3.0000000e+00 1.2000000e+01 9.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00
|
||||
1.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.0000000e+00 8.0000000e+00 1.4000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 1.4000000e+01 1.0000000e+00 4.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
3.0000000e+00 9.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 1.4000000e+01 6.0000000e+00 9.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 4.0000000e+00 2.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 1.2000000e+01 4.0000000e+00 5.0000000e+00
|
||||
1.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 2.0000000e+00 4.0000000e+00 8.0000000e+00 5.0000000e+00 5.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 5.0000000e+00 1.0000000e+01 6.0000000e+00 9.0000000e+00 6.0000000e+00 8.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 8.0000000e+00 9.0000000e+00 3.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00
|
||||
3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 0.0000000e+00 6.0000000e+00 1.3000000e+01 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 8.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 1.0000000e+01 1.0000000e+00 7.0000000e+00 1.0000000e+01 9.0000000e+00 7.0000000e+00 1.0000000e+00 1.0000000e+01 3.0000000e+00 6.0000000e+00
|
||||
4.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 9.0000000e+00 3.0000000e+00 1.0000000e+01 6.0000000e+00 7.0000000e+00 3.0000000e+00 9.0000000e+00 4.0000000e+00 7.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 0.0000000e+00 8.0000000e+00 9.0000000e+00 7.0000000e+00
|
||||
3.0000000e+00 3.0000000e+00 3.0000000e+00 2.0000000e+00 1.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 5.0000000e+00 1.1000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 5.0000000e+00 5.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 1.0000000e+01 5.0000000e+00 6.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00
|
||||
5.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 5.0000000e+00 4.0000000e+00 1.2000000e+01 5.0000000e+00 5.0000000e+00 1.2000000e+01 9.0000000e+00 4.0000000e+00 2.0000000e+00 1.2000000e+01 1.0000000e+00 5.0000000e+00 7.0000000e+00 1.1000000e+01 7.0000000e+00 8.0000000e+00 4.0000000e+00 3.0000000e+00 1.0000000e+01 2.0000000e+00 7.0000000e+00 1.0000000e+01 1.2000000e+01 6.0000000e+00 1.0000000e+00 1.1000000e+01 2.0000000e+00 5.0000000e+00
|
||||
3.0000000e+00 1.0000000e+01 4.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 9.0000000e+00 0.0000000e+00 7.0000000e+00 1.3000000e+01 6.0000000e+00 7.0000000e+00 0.0000000e+00 9.0000000e+00 2.0000000e+00 7.0000000e+00 3.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 1.4000000e+01 1.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00
|
||||
7.0000000e+00 9.0000000e+00 1.0000000e+01 7.0000000e+00 6.0000000e+00 4.0000000e+00 6.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 1.1000000e+01 1.1000000e+01 9.0000000e+00 3.0000000e+00 4.0000000e+00 6.0000000e+00 4.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 2.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01
|
||||
8.0000000e+00 8.0000000e+00 1.1000000e+01 7.0000000e+00 1.2000000e+01 8.0000000e+00 8.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 1.2000000e+01 7.0000000e+00 8.0000000e+00 3.0000000e+00 5.0000000e+00 5.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 3.0000000e+00 8.0000000e+00 6.0000000e+00 1.2000000e+01 7.0000000e+00 6.0000000e+00 1.5000000e+01 0.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00
|
||||
5.0000000e+00 9.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 1.1000000e+01 1.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 5.0000000e+00 2.0000000e+00 8.0000000e+00 4.0000000e+00 5.0000000e+00 6.0000000e+00 5.0000000e+00 6.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 7.0000000e+00 5.0000000e+00 8.0000000e+00 9.0000000e+00 1.0000000e+01
|
||||
1.0000000e+00 4.0000000e+00 1.0000000e+00 3.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 2.0000000e+00 8.0000000e+00 2.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 3.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 7.0000000e+00 7.0000000e+00 2.0000000e+00 9.0000000e+00 6.0000000e+00 1.0000000e+01
|
||||
6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 7.0000000e+00 7.0000000e+00 1.2000000e+01 2.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 9.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 4.0000000e+00 8.0000000e+00 6.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01
|
||||
5.0000000e+00 9.0000000e+00 4.0000000e+00 5.0000000e+00 2.0000000e+00 8.0000000e+00 8.0000000e+00 3.0000000e+00 6.0000000e+00 1.3000000e+01 4.0000000e+00 6.0000000e+00 1.0000000e+00 7.0000000e+00 4.0000000e+00 9.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 7.0000000e+00 3.0000000e+00 1.1000000e+01 8.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 7.0000000e+00 8.0000000e+00
|
||||
4.0000000e+00 1.1000000e+01 5.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 1.4000000e+01 0.0000000e+00 5.0000000e+00 7.0000000e+00 1.0000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 3.0000000e+00 4.0000000e+00 4.0000000e+00 3.0000000e+00 2.0000000e+00 5.0000000e+00 1.2000000e+01 3.0000000e+00 3.0000000e+00 9.0000000e+00 1.1000000e+01 7.0000000e+00 2.0000000e+00 1.1000000e+01 1.0000000e+00 8.0000000e+00
|
||||
3.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 3.0000000e+00 9.0000000e+00 6.0000000e+00 3.0000000e+00 4.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 6.0000000e+00 5.0000000e+00 1.0000000e+00 8.0000000e+00 2.0000000e+00 2.0000000e+00 3.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+01 6.0000000e+00 3.0000000e+00 6.0000000e+00 1.2000000e+01 4.0000000e+00 9.0000000e+00 0.0000000e+00 7.0000000e+00 1.0000000e+00 7.0000000e+00
|
||||
2.0000000e+00 5.0000000e+00 4.0000000e+00 7.0000000e+00 1.0000000e+00 8.0000000e+00 1.4000000e+01 0.0000000e+00 6.0000000e+00 6.0000000e+00 1.1000000e+01 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 5.0000000e+00 6.0000000e+00 6.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 9.0000000e+00 4.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 9.0000000e+00 8.0000000e+00
|
||||
1.0000000e+00 6.0000000e+00 0.0000000e+00 4.0000000e+00 0.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 4.0000000e+00 7.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 1.0000000e+00 0.0000000e+00 2.0000000e+00 0.0000000e+00 0.0000000e+00 7.0000000e+00 6.0000000e+00 1.0000000e+01 4.0000000e+00 7.0000000e+00 1.2000000e+01 8.0000000e+00 2.0000000e+00 1.0000000e+01 0.0000000e+00 8.0000000e+00
|
||||
5.0000000e+00 8.0000000e+00 6.0000000e+00 7.0000000e+00 6.0000000e+00 6.0000000e+00 9.0000000e+00 5.0000000e+00 7.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00 4.0000000e+00 1.3000000e+01 9.0000000e+00 6.0000000e+00 3.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 2.0000000e+00 7.0000000e+00 7.0000000e+00 4.0000000e+00 1.4000000e+01 9.0000000e+00 6.0000000e+00 8.0000000e+00 0.0000000e+00 8.0000000e+00 8.0000000e+00 8.0000000e+00
|
||||
4.0000000e+00 9.0000000e+00 4.0000000e+00 4.0000000e+00 2.0000000e+00 7.0000000e+00 1.0000000e+01 2.0000000e+00 5.0000000e+00 1.3000000e+01 5.0000000e+00 4.0000000e+00 1.0000000e+00 8.0000000e+00 5.0000000e+00 8.0000000e+00 3.0000000e+00 7.0000000e+00 4.0000000e+00 5.0000000e+00 3.0000000e+00 7.0000000e+00 8.0000000e+00 7.0000000e+00 5.0000000e+00 1.0000000e+01 8.0000000e+00 7.0000000e+00 3.0000000e+00 8.0000000e+00 3.0000000e+00 8.0000000e+00
|
||||
6.0000000e+00 1.0000000e+01 6.0000000e+00 7.0000000e+00 5.0000000e+00 5.0000000e+00 1.1000000e+01 3.0000000e+00 7.0000000e+00 1.1000000e+01 1.0000000e+01 5.0000000e+00 2.0000000e+00 1.2000000e+01 2.0000000e+00 4.0000000e+00 5.0000000e+00 1.1000000e+01 4.0000000e+00 8.0000000e+00 4.0000000e+00 6.0000000e+00 1.1000000e+01 2.0000000e+00 3.0000000e+00 1.2000000e+01 6.0000000e+00 5.0000000e+00 2.0000000e+00 9.0000000e+00 8.0000000e+00 8.0000000e+00
|
||||
3.0000000e+00 1.0000000e+00 3.0000000e+00 1.0000000e+00 1.0000000e+00 8.0000000e+00 6.0000000e+00 1.1000000e+01 0.0000000e+00 7.0000000e+00 9.0000000e+00 8.0000000e+00 7.0000000e+00 6.0000000e+00 0.0000000e+00 8.0000000e+00 6.0000000e+00 1.0000000e+01 6.0000000e+00 8.0000000e+00 4.0000000e+00 3.0000000e+00 9.0000000e+00 5.0000000e+00 6.0000000e+00 1.1000000e+01 1.1000000e+01 9.0000000e+00 3.0000000e+00 9.0000000e+00 1.0000000e+00 7.0000000e+00
|
||||
@ -0,0 +1,474 @@
|
||||
{
|
||||
"cells": [
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "mWA2s-HPT5L9"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"10 % 3"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "8_zCzPa3T_VE"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"from google.colab import drive\n",
|
||||
"drive.mount('/content/drive')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "hBLeHBeiUOAy"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"import os\n",
|
||||
"os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab2')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "dREn2NGEUfIy"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/lab02_lib.py"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "FVyzYbb6Up8S"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_train.txt\n",
|
||||
"!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_test.txt\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "QGPmkl3FU2Et"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# импорт модулей\n",
|
||||
"import numpy as np\n",
|
||||
"import lab02_lib as lib\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "Hlmf3aY4dbg6"
|
||||
},
|
||||
"source": [
|
||||
"2. Сгенерировать индивидуальный набор двумерных данных в пространстве\n",
|
||||
"признаков с координатами центра (k, k), где k – номер бригады. Вывести\n",
|
||||
"полученные данные на рисунок и в консоль.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "r7gSmNgWdXo2"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"k = 10\n",
|
||||
"data = lib.datagen(k, k, 1000, 2)\n",
|
||||
"print('Размерность данных:', data.shape)\n",
|
||||
"print('Пример данных:', data)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "Na7tT2TReMcu"
|
||||
},
|
||||
"source": [
|
||||
"3-4. Создать и обучить автокодировщик AE1 простой архитектуры, выбрав\n",
|
||||
"небольшое количество эпох обучения. Зафиксировать в таблице вида\n",
|
||||
"табл.1 количество скрытых слоёв и нейронов в них.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "emmU0JGJeOVD"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# AE1 — простая сеть, меньше эпох\n",
|
||||
"patience = 300\n",
|
||||
"ae1_trained, IRE1, IREth1 = lib.create_fit_save_ae(\n",
|
||||
" data, 'out/AE1.h5', 'out/AE1_ire_th.txt',\n",
|
||||
" 1000, False, patience, verbose_every_n_epochs = 100, early_stopping_delta = 0.001\n",
|
||||
")\n",
|
||||
"lib.ire_plot('training', IRE1, IREth1, 'AE1')\n",
|
||||
"print('AE1 IREth =', IREth1)\n",
|
||||
"\n",
|
||||
"#1\n",
|
||||
"#1"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "1Pu38Xylsvjr"
|
||||
},
|
||||
"source": [
|
||||
"5-6. Создать и обучить второй автокодировщик AE2 с усложненной\n",
|
||||
"архитектурой, задав большее количество эпох обучения.\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "CToPhfVgs4Ya"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# AE2 — более сложная сеть, больше эпох\n",
|
||||
"ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(\n",
|
||||
" data, 'out/AE2.h5', 'out/AE2_ire_th.txt',\n",
|
||||
" 3000, False, patience, verbose_every_n_epochs = 500, early_stopping_delta = 0.001\n",
|
||||
")\n",
|
||||
"lib.ire_plot('training', IRE2, IREth2, 'AE2')\n",
|
||||
"print('AE2 IREth =', IREth2)\n",
|
||||
"\n",
|
||||
"# 5 3 2 3 5"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "aiMYnnw5ybt2"
|
||||
},
|
||||
"source": [
|
||||
"8. Рассчитать характеристики качества обучения EDCA для AE1 и AE2.\n",
|
||||
"Визуализировать и сравнить области пространства признаков,\n",
|
||||
"распознаваемые автокодировщиками AE1 и AE2. Сделать вывод о\n",
|
||||
"пригодности AE1 и AE2 для качественного обнаружения аномалий."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "N6F98jegybGj"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#AE1\n",
|
||||
"numb_square = 20\n",
|
||||
"xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "Rc5-WXjC9rAk"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#AE2\n",
|
||||
"numb_square = 20\n",
|
||||
"xx, yy, Z2 = lib.square_calc(numb_square, data, ae2_trained, IREth2, '2', True)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "id6lkBOi9y1v"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"#Сравнение\n",
|
||||
"lib.plot2in1(data, xx, yy, Z1, Z2)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "NZRB1Vg1y0ta"
|
||||
},
|
||||
"source": [
|
||||
"9. Изучить сохраненный набор данных и пространство признаков. Создать\n",
|
||||
"тестовую выборку, состоящую, как минимум, из 4ёх элементов, не\n",
|
||||
"входящих в обучающую выборку. Элементы должны быть такими, чтобы\n",
|
||||
"AE1 распознавал их как норму, а AE2 детектировал как аномалии."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "on7YZMauy4ZS"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"with open('data_test.txt', 'w') as file:\n",
|
||||
" file.write(\"10.5 9.5\\n\")\n",
|
||||
" file.write(\"9.0 10.2\\n\")\n",
|
||||
" file.write(\"9.6 10.5\\n\")\n",
|
||||
" file.write(\"9.0 9.0\\n\")\n",
|
||||
"data_test = np.loadtxt('data_test.txt', dtype=float)\n",
|
||||
"print(data_test)\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "8FuMOxLu_wVZ"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"data_test = np.loadtxt('data_test.txt', dtype=float)\n",
|
||||
"print(data_test)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "cib_DiqazAWM"
|
||||
},
|
||||
"source": [
|
||||
"10. Применить обученные автокодировщики AE1 и AE2 к тестовым данным\n",
|
||||
"и вывести значения ошибки реконструкции для каждого элемента тестовой\n",
|
||||
"выборки относительно порога на график и в консоль."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "IprWT-m4zDR1"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# AE1\n",
|
||||
"predicted_labels1, ire1 = lib.predict_ae(ae1_trained, data_test, IREth1)\n",
|
||||
"lib.anomaly_detection_ae(predicted_labels1, ire1, IREth1)\n",
|
||||
"lib.ire_plot('test', ire1, IREth1, 'AE1')\n",
|
||||
"\n",
|
||||
"\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "3jD3wEhr5f6t"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"# AE2\n",
|
||||
"predicted_labels2, ire2 = lib.predict_ae(ae2_trained, data_test, IREth2)\n",
|
||||
"lib.anomaly_detection_ae(predicted_labels2, ire2, IREth2)\n",
|
||||
"lib.ire_plot('test', ire2, IREth2, 'AE2')"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "67myAxUazRQ1"
|
||||
},
|
||||
"source": [
|
||||
"11. Визуализировать элементы обучающей и тестовой выборки в областях\n",
|
||||
"пространства признаков, распознаваемых автокодировщиками AE1 и AE2."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "jzFhJTrNzS4A"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "hpP0MebIzZFi"
|
||||
},
|
||||
"source": [
|
||||
"12-13 таблицы и выводы\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "RF2lQ2NMzdIZ"
|
||||
},
|
||||
"source": [
|
||||
"Часть 2\n"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "R_YSpxv0zj0W"
|
||||
},
|
||||
"source": [
|
||||
"2. Загрузить многомерную обучающую выборку реальных данных\n",
|
||||
"name_train.txt."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "XRZI769HzjMQ"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"train = np.loadtxt('letter_train.txt', dtype=float)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "sDimn5kIzvff"
|
||||
},
|
||||
"source": [
|
||||
"3. Вывести полученные данные и их размерность в консоли."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "dbb7jXUjzzNT"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"print('train.shape =', train.shape)\n",
|
||||
"print('Пример train:', train)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "cCoweu23z4sx"
|
||||
},
|
||||
"source": [
|
||||
"4-6. Создать и обучить автокодировщик с подходящей для данных\n",
|
||||
"архитектурой. Выбрать необходимое количество эпох обучения"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "mqiCTs1H0HL5"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"patience = 5000\n",
|
||||
"ae3_trained, IRE3, IREth3 = lib.create_fit_save_ae(\n",
|
||||
" train, 'out/AE3.h5', 'out/AE3_ire_th.txt',\n",
|
||||
" 100000, False, patience, verbose_every_n_epochs = 1000, early_stopping_delta = 0.001, early_stopping_value = 0.01\n",
|
||||
")\n",
|
||||
"\n",
|
||||
"\n",
|
||||
"# 32 16 12 8 7 8 12 16 32\n",
|
||||
"\n",
|
||||
"# 30 24 19 15 11 15 19 24 30\n",
|
||||
"\n",
|
||||
"# 28 21 16 12 9 12 16 21 28\n",
|
||||
"# 32 26 22 18 15 12 15 18 22 26 32\n",
|
||||
"# 35 28 21 14 7 14 21 28 35"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "S-bT1nnDckWS"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"lib.ire_plot('training', IRE3, IREth3, 'AE3')\n",
|
||||
"print('AE3 IREth =', IREth3)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "markdown",
|
||||
"metadata": {
|
||||
"id": "HUoWlB7T4lPH"
|
||||
},
|
||||
"source": [
|
||||
"8. Подать тестовую выборку на вход обученного автокодировщика для\n",
|
||||
"обнаружения аномалий. Вывести график ошибки реконструкции\n",
|
||||
"элементов тестовой выборки относительно порога."
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "m9o31pOLG5IR"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"test = np.loadtxt('letter_test.txt', dtype=float)\n",
|
||||
"print('test.shape =', test.shape)\n",
|
||||
"print('Пример train:', test)"
|
||||
]
|
||||
},
|
||||
{
|
||||
"cell_type": "code",
|
||||
"execution_count": null,
|
||||
"metadata": {
|
||||
"id": "gyGWxfCt4jT5"
|
||||
},
|
||||
"outputs": [],
|
||||
"source": [
|
||||
"predicted_labels3, ire3 = lib.predict_ae(ae3_trained, test, IREth3)\n",
|
||||
"lib.anomaly_detection_ae(predicted_labels3, ire3, IREth3)\n",
|
||||
"lib.ire_plot('test', ire3, IREth3, 'AE3')"
|
||||
]
|
||||
}
|
||||
],
|
||||
"metadata": {
|
||||
"accelerator": "GPU",
|
||||
"colab": {
|
||||
"authorship_tag": "ABX9TyP7I3xYtv8vwrxTVttwH659",
|
||||
"gpuType": "T4",
|
||||
"provenance": []
|
||||
},
|
||||
"kernelspec": {
|
||||
"display_name": "Python 3",
|
||||
"name": "python3"
|
||||
},
|
||||
"language_info": {
|
||||
"name": "python"
|
||||
}
|
||||
},
|
||||
"nbformat": 4,
|
||||
"nbformat_minor": 0
|
||||
}
|
||||
|
После Ширина: | Высота: | Размер: 21 KiB |
|
После Ширина: | Высота: | Размер: 23 KiB |
@ -0,0 +1 @@
|
||||
10.98
|
||||
|
После Ширина: | Высота: | Размер: 37 KiB |
@ -0,0 +1 @@
|
||||
0.55
|
||||
|
После Ширина: | Высота: | Размер: 34 KiB |
@ -0,0 +1 @@
|
||||
6.75
|
||||
|
После Ширина: | Высота: | Размер: 31 KiB |
|
После Ширина: | Высота: | Размер: 42 KiB |
|
После Ширина: | Высота: | Размер: 73 KiB |
|
После Ширина: | Высота: | Размер: 45 KiB |
|
После Ширина: | Высота: | Размер: 111 KiB |
|
После Ширина: | Высота: | Размер: 92 KiB |
|
После Ширина: | Высота: | Размер: 96 KiB |
|
После Ширина: | Высота: | Размер: 107 KiB |
|
После Ширина: | Высота: | Размер: 69 KiB |
|
После Ширина: | Высота: | Размер: 82 KiB |
@ -0,0 +1,5 @@
|
||||
------------Оценка качества AE2 С ПОМОЩЬЮ НОВЫХ МЕТРИК------------
|
||||
Approx = 0.36
|
||||
Excess = 1.7777777777777777
|
||||
Deficit = 0.0
|
||||
Coating = 1.0
|
||||
|
После Ширина: | Высота: | Размер: 46 KiB |
@ -0,0 +1,471 @@
|
||||
# Отчёт по лабораторной работе №2
|
||||
|
||||
**Кобзев Александр, Кирсанов Егор — А-01-22**
|
||||
|
||||
|
||||
## 1.1. В среде Google Colab создали новый блокнот (notebook). Импортировали необходимые для работы библиотеки и модули.
|
||||
|
||||
|
||||
```python
|
||||
from google.colab import drive
|
||||
drive.mount('/content/drive')
|
||||
import os
|
||||
os.chdir('/content/drive/MyDrive/Colab Notebooks/is_lab2')
|
||||
```
|
||||
|
||||
```
|
||||
!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/lab02_lib.py
|
||||
!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_train.txt
|
||||
!wget -N http://uit.mpei.ru/git/main/is_dnn/raw/branch/main/labworks/LW2/data/letter_test.txt
|
||||
```
|
||||
|
||||
``` python
|
||||
# импорт модулей
|
||||
import numpy as np
|
||||
import lab02_lib as lib
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1.2. Сгенерировали индивидуальный набор двумерных данных в пространстве признаков с координатами центра (k, k), где k=10 – номер бригады. Вывели полученные данные на рисунок и в консоль:
|
||||
|
||||
```python
|
||||
k = 10
|
||||
data = lib.datagen(k, k, 1000, 2)
|
||||
print('Размерность данных:', data.shape)
|
||||
print('Пример данных:', data)
|
||||
```
|
||||

|
||||
|
||||
```
|
||||
Размерность данных: (1000, 2)
|
||||
Пример данных: [[ 9.91598657 9.75579359]
|
||||
[ 9.97948747 9.98708802]
|
||||
[ 9.99042489 10.01396366]
|
||||
...
|
||||
[ 9.97013826 9.93047258]
|
||||
[10.00891654 9.94318369]
|
||||
[10.04614761 9.91592173]]
|
||||
```
|
||||
---
|
||||
|
||||
## 1.3. Создали и обучили автокодировщик AE1 простой архитектуры, выбрав небольшое количество эпох обучения.
|
||||
|
||||
```python
|
||||
patience = 300
|
||||
ae1_trained, IRE1, IREth1 = lib.create_fit_save_ae(
|
||||
data, 'out/AE1.h5', 'out/AE1_ire_th.txt',
|
||||
1000, False, patience, verbose_every_n_epochs = 100, early_stopping_delta = 0.001
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1.4. Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали порог ошибки реконструкции – порог обнаружения аномалий.
|
||||
|
||||
MSE = 56.8932
|
||||
|
||||
```python
|
||||
lib.ire_plot('training', IRE1, IREth1, 'AE1')
|
||||
print('AE1 IREth =', IREth1)
|
||||
```
|
||||
|
||||

|
||||
|
||||
```
|
||||
Порог ошибки реконструкции:
|
||||
AE1 IREth = 10.98
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1.5. Создали и обучили второй автокодировщик AE2 с усложненной архитектурой, задав большее количество эпох обучения.
|
||||
|
||||
```python
|
||||
ae2_trained, IRE2, IREth2 = lib.create_fit_save_ae(
|
||||
data, 'out/AE2.h5', 'out/AE2_ire_th.txt',
|
||||
3000, False, patience, verbose_every_n_epochs = 500, early_stopping_delta = 0.001
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 1.6. Зафиксировали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксировали порог ошибки реконструкции – порог обнаружения аномалий.
|
||||
|
||||
MSE = 0.0225
|
||||
|
||||
```python
|
||||
lib.ire_plot('training', IRE2, IREth2, 'AE2')
|
||||
print('AE2 IREth =', IREth2)
|
||||
```
|
||||
|
||||

|
||||
|
||||
```
|
||||
Порог ошибки реконструкции:
|
||||
AE2 IREth = 0.55
|
||||
```
|
||||
---
|
||||
|
||||
## 1.7. Рассчитали характеристики качества обучения EDCA для AE1 и AE2. Визуализировали и сравнить области пространства признаков, распознаваемые автокодировщиками AE1 и AE2. Сделать вывод о пригодности AE1 и AE2 для качественного обнаружения аномалий.
|
||||
|
||||
```python
|
||||
# AE1
|
||||
numb_square = 20
|
||||
xx, yy, Z1 = lib.square_calc(numb_square, data, ae1_trained, IREth1, '1', True)
|
||||
```
|
||||
|
||||

|
||||
|
||||
```
|
||||
amount: 18
|
||||
amount_ae: 293
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
```
|
||||
Оценка качества AE1
|
||||
IDEAL = 0. Excess: 15.277777777777779
|
||||
IDEAL = 0. Deficit: 0.0
|
||||
IDEAL = 1. Coating: 1.0
|
||||
summa: 1.0
|
||||
IDEAL = 1. Extrapolation precision (Approx): 0.06143344709897611
|
||||
```
|
||||
|
||||
```python
|
||||
# AE2
|
||||
numb_square = 20
|
||||
xx, yy, Z2 = lib.square_calc(numb_square, data, ae2_trained, IREth2, '2', True)
|
||||
```
|
||||
|
||||

|
||||
|
||||
```
|
||||
amount: 18
|
||||
amount_ae: 50
|
||||
```
|
||||
|
||||

|
||||

|
||||
|
||||
```
|
||||
Оценка качества AE2
|
||||
IDEAL = 0. Excess: 1.7777777777777777
|
||||
IDEAL = 0. Deficit: 0.0
|
||||
IDEAL = 1. Coating: 1.0
|
||||
summa: 1.0
|
||||
IDEAL = 1. Extrapolation precision (Approx): 0.36
|
||||
```
|
||||
|
||||
```python
|
||||
# Сравнение
|
||||
lib.plot2in1(data, xx, yy, Z1, Z2)
|
||||
```
|
||||
|
||||

|
||||
|
||||
|
||||
---
|
||||
|
||||
## 1.8. Если автокодировщик AE2 недостаточно точно аппроксимирует область обучающих данных, то подобрать подходящие параметры автокодировщика и повторить шаги (6) – (8).
|
||||
|
||||
Немного изменили параметры автокодировщика AE2 для более качесвенной аппроксимации(использовались выше)
|
||||
|
||||
---
|
||||
|
||||
## 1.9. Изучили сохраненный набор данных и пространство признаков. Создали тестовую выборку, состоящую, как минимум, из 4ёх элементов, не входящих в обучающую выборку. Элементы должны быть такими, чтобы AE1 распознавал их как норму, а AE2 детектировал как аномалии.
|
||||
|
||||
```python
|
||||
with open('data_test.txt', 'w') as file:
|
||||
file.write("10.5 9.5\n")
|
||||
file.write("9.0 10.2\n")
|
||||
file.write("9.6 10.5\n")
|
||||
file.write("9.0 9.0\n")
|
||||
data_test = np.loadtxt('data_test.txt', dtype=float)
|
||||
print(data_test)
|
||||
```
|
||||
|
||||
```
|
||||
[[10.5 9.5]
|
||||
[ 9. 10.2]
|
||||
[ 9.6 10.5]
|
||||
[ 9. 9. ]]
|
||||
```
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 1.10. Применили обученные автокодировщики AE1 и AE2 к тестовым данным и вывели значения ошибки реконструкции для каждого элемента тестовой выборки относительно порога на график и в консоль.
|
||||
|
||||
```python
|
||||
# AE1
|
||||
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
|
||||
# AE2
|
||||
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.] [0.62] 0.55
|
||||
1 [1.] [1.05] 0.55
|
||||
2 [1.] [0.77] 0.55
|
||||
3 [1.] [1.29] 0.55
|
||||
Обнаружено 4.0 аномалий
|
||||
```
|
||||
|
||||

|
||||
|
||||
---
|
||||
## 1.11. Визуализирывали элементы обучающей и тестовой выборки в областях пространства признаков, распознаваемых автокодировщиками AE1 и AE2.
|
||||
|
||||
```python
|
||||
lib.plot2in1_anomaly(data, xx, yy, Z1, Z2, data_test)
|
||||
```
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 1.12. Результаты исследования занесли в таблицу:
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
<th> </th>
|
||||
<th>Количество скрытых слоёв</th>
|
||||
<th>Количество нейронов в скрытых слоях</th>
|
||||
<th>Количество эпох обучения</th>
|
||||
<th>Ошибка MSE_stop</th>
|
||||
<th>Порог ошибки реконструкции</th>
|
||||
<th>Значение показателя Excess</th>
|
||||
<th>Значение показателя Approx</th>
|
||||
<th>Количество обнаруженных аномалий</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td>АЕ1</td>
|
||||
<td align="center">1</td>
|
||||
<td align="center">1</td>
|
||||
<td align="center">1000</td>
|
||||
<td align="center">56.89</td>
|
||||
<td align="center">10.98</td>
|
||||
<td align="center">15.28</td>
|
||||
<td align="center">0.06</td>
|
||||
<td align="center">0</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>АЕ2</td>
|
||||
<td align="center">5</td>
|
||||
<td align="center">5 3 2 3 5</td>
|
||||
<td align="center">3000</td>
|
||||
<td align="center">0.02</td>
|
||||
<td align="center">0.55</td>
|
||||
<td align="center">1.78</td>
|
||||
<td align="center">0.36</td>
|
||||
<td align="center">4</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
---
|
||||
|
||||
## 1.13. Сделали выводы о требованиях к:
|
||||
- данным для обучения,
|
||||
- архитектуре автокодировщика,
|
||||
- количеству эпох обучения,
|
||||
- ошибке MSE_stop, приемлемой для останова обучения,
|
||||
- ошибке реконструкции обучающей выборки (порогу обнаружения аномалий),
|
||||
- характеристикам качества обучения EDCA одноклассового классификатора
|
||||
|
||||
для качественного обнаружения аномалий в данных.
|
||||
|
||||
- Данные для обучения: должны содержать только нормальные примеры без выбросов и полно описывать область нормы.
|
||||
- Архитектура автокодировщика: симметричная, с узким «бутылочным горлышком»
|
||||
- Количество эпох: достаточно большое, чтобы сеть обучилась, но без переобучения, в для нашего набора оптимально окло 3000.
|
||||
- Ошибка MSE_stop: должна быть небольшой, но не меньше 0.01 , дабы избежать переобучение.
|
||||
- Порог ошибки реконструкции: выбирается по максимуму IRE обучающей выборки; высокий порог → пропуски аномалий.
|
||||
- Характеристики EDCA: хорошая модель имеет низкий Excess, высокий Approx ≈ 1; такие модели точнее очерчивают область нормы и лучше детектируют аномалии.
|
||||
|
||||
---
|
||||
|
||||
## 2.1. Изучили описание своего набора реальных данных
|
||||
|
||||
Набор Letter Recognition предназначен для распознавания букв английского алфавита по 16 числовым признакам, описывающим изображение буквы.
|
||||
Для задачи обнаружения аномалий из исходных данных выделены три буквы, формирующие нормальный класс, а для аномалий — случайные буквы, не входящие в нормальный класс.
|
||||
Чтобы усложнить задачу, данные объединены попарно, в результате чего размерность увеличена до 32 признаков. Таким образом, каждый аномальный пример частично содержит признаки нормального класса, что делает задачу более сложной для автокодировщика.
|
||||
| Количество признаков | Количество примеров | Количество нормальных примеров | Количество аномальных примеров |
|
||||
| ----- | ----- | ------ | ----- |
|
||||
| **32** | **1600** | **1500** | **100** |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2.2. Загрузили многомерную обучающую выборку реальных данных name_train.txt.
|
||||
|
||||
```python
|
||||
train = np.loadtxt('letter_train.txt', dtype=float)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2.3. Вывели полученные данные и их размерность в консоли.
|
||||
|
||||
```python
|
||||
print('train.shape =', train.shape)
|
||||
print('Пример train:', train)
|
||||
```
|
||||
|
||||
```
|
||||
train.shape = (1500, 32)
|
||||
Пример train: [[ 6. 10. 5. ... 10. 2. 7.]
|
||||
[ 0. 6. 0. ... 8. 1. 7.]
|
||||
[ 4. 7. 5. ... 8. 2. 8.]
|
||||
...
|
||||
[ 7. 10. 10. ... 8. 5. 6.]
|
||||
[ 7. 7. 10. ... 6. 0. 8.]
|
||||
[ 3. 4. 5. ... 9. 5. 5.]]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2.4. Cоздали и обучили автокодировщик с подходящей для данных архитектурой.
|
||||
|
||||
```python
|
||||
patience = 5000
|
||||
ae3_trained, IRE3, IREth3 = lib.create_fit_save_ae(
|
||||
train, 'out/AE3.h5', 'out/AE3_ire_th.txt',
|
||||
100000, False, patience, verbose_every_n_epochs = 5000, early_stopping_delta = 0.001
|
||||
)
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2.5. Зафиксирывали ошибку MSE, на которой обучение завершилось. Построили график ошибки реконструкции обучающей выборки. Зафиксирывали порог ошибки реконструкции – порог обнаружения аномалий.
|
||||
|
||||
MSE = 0.4862
|
||||
|
||||
```python
|
||||
lib.ire_plot('training', IRE3, IREth3, 'AE3')
|
||||
print('AE3 IREth =', IREth3)
|
||||
```
|
||||
|
||||

|
||||
|
||||
```
|
||||
Порог ошибки реконструкции:
|
||||
AE3 IREth = 10.75
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2.6. Сделать вывод о пригодности обученного автокодировщика для качественного обнаружения аномалий. Если порог ошибки реконструкции слишком велик, то подобрать подходящие параметры автокодировщика и повторить шаги (4) – (6).
|
||||
|
||||
### Очент высокий порог, так что попробуем другю структуру:
|
||||
|
||||
|
||||
MSE = 0.3363
|
||||
|
||||
```python
|
||||
lib.ire_plot('training', IRE3, IREth3, 'AE3')
|
||||
print('AE3 IREth =', IREth3)
|
||||
```
|
||||
|
||||

|
||||
|
||||
```
|
||||
Порог ошибки реконструкции:
|
||||
AE3 IREth = 6.75
|
||||
```
|
||||
|
||||
Отсановимся на этой модели
|
||||
|
||||
---
|
||||
|
||||
## 2.7. Изучили и загрузили тестовую выборку letter_test.txt.
|
||||
|
||||
```python
|
||||
test = np.loadtxt('letter_test.txt', dtype=float)
|
||||
print('test.shape =', test.shape)
|
||||
print('Пример train:', test)
|
||||
```
|
||||
|
||||
```
|
||||
test.shape = (100, 32)
|
||||
Пример train: [[ 8. 11. 8. ... 7. 4. 9.]
|
||||
[ 4. 5. 4. ... 13. 8. 8.]
|
||||
[ 3. 3. 5. ... 8. 3. 8.]
|
||||
...
|
||||
[ 4. 9. 4. ... 8. 3. 8.]
|
||||
[ 6. 10. 6. ... 9. 8. 8.]
|
||||
[ 3. 1. 3. ... 9. 1. 7.]]
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 2.8. Подали тестовую выборку на вход обученного автокодировщика для обнаружения аномалий. Вывели график ошибки реконструкции элементов тестовой выборки относительно порога.
|
||||
|
||||
```python
|
||||
predicted_labels3_v1, ire3_v1 = lib.predict_ae(ae3_v1_trained, test, IREth3_v1)
|
||||
lib.ire_plot('test', ire3_v1, IREth3_v1, 'AE3_v1')
|
||||
```
|
||||
|
||||
```
|
||||
i Labels IRE IREth
|
||||
0 [1.] [9.78] 6.75
|
||||
1 [1.] [8.92] 6.75
|
||||
2 [1.] [14.27] 6.75
|
||||
...
|
||||
99 [1.] [15.66] 6.75
|
||||
Обнаружено 91.0 аномалий
|
||||
```
|
||||
|
||||

|
||||
|
||||
---
|
||||
|
||||
## 2.9. Если результаты обнаружения аномалий не удовлетворительные (обнаружено менее 70% аномалий), то подобрать подходящие параметры автокодировщика и повторить шаги (4) – (9).
|
||||
|
||||
Результаты приемлемы
|
||||
|
||||
---
|
||||
|
||||
## 2.10. Параметры наилучшего автокодировщика и результаты обнаружения аномалий занести в таблицу:
|
||||
|
||||
| Dataset name | Кол-во скрытых слоёв | Кол-во нейронов в скрытых слоях | Кол-во эпох обучения | Ошибка MSE_stop | Порог ошибки реконструкции |% обнаруженных аномалий |
|
||||
| --- | --- | --- | --- | --- | --- | --- |
|
||||
| Letter | 9 | 35 28 21 14 7 14 21 28 35 | 100000 | 0.3363 | 6.75 | 91% |
|
||||
|
||||
|
||||
---
|
||||
|
||||
## 2.11. Сделать выводы о требованиях к:
|
||||
- данным для обучения,
|
||||
- архитектуре автокодировщика,
|
||||
- количеству эпох обучения,
|
||||
- ошибке MSE_stop, приемлемой для останова обучения,
|
||||
- ошибке реконструкции обучающей выборки (порогу обнаруженияаномалий)
|
||||
|
||||
для качественного обнаружения аномалий в случае, когда размерность
|
||||
пространства признаков высока.
|
||||
|
||||
- Данные для обучения: должны содержать только нормальные объекты(отсутсвие аномалий).
|
||||
- Архитектура автокодировщика: симметричная, 9 скрытых слоёв с наличием бутылочного горлышка
|
||||
- Количество эпох: около 100 000 достаточно для стабилизации ошибки и точного восстановления данных.
|
||||
- Ошибка MSE_stop: практика показала, что 0.34 — приемлемое значение для высокоразмерного набора Letter.
|
||||
- Качество обнаружения: 91 % аномалий — модель адекватно аппроксимирует область нормы и надёжно выделяет отклонения.
|
||||
|
||||