ВВЕДЕНИЕ
В современном мире всё большее внимание уделяется уровню комфорта и безопасности человека, который в первую очередь зависит от того чем человек дышит.
Сегодня уже точно известно из чего состоит воздух: 20% кислорода, 78% азота и оставшиеся 2% занимают пары воды, углекислый газ, инертные газы (аргон, неон, ксенон и т.п) и другие примеси в микроскопических количествах. Но такой состав имеет экологически чистый воздух в лесах и полях. Состав воздуха в городских условиях сильно отличается от состава чистого воздуха. Городской воздух содержит меньше кислорода и больше углекислого газа, также он содержит огромное количество вредных химических веществ и испарений[6].
Атмосферный воздух является одним из важнейших факторов, влияющих на здоровье человека и загрязнённый воздух значительно повышает риск возникновения различных заболеваний.
В настоящее время существует большое количество датчиков определяющих концентрацию веществ в воздухе как в домашних условиях, так и на улице. Существуют даже информационные сайты с интерактивной картой, на которой можно посмотреть концентрацию веществ в атмосферном воздухе в режиме реального времени.
РЕАЛИЗАЦИЯ НЕЙРОННОЙ СЕТИ
Для определения степени загрязнения воздуха авторамиразработана нейронная сеть, которая, используя данные о концентрации загрязнителей в воздухе, смогла бы выполнить данную задачу.
Для разработки и реализации использовался язык программирования Python[2] и необходимые библиотеки.
В качестве набора данных для обучения и тестирования нейронной сети были использованы следующие загрязнители:
SO2 – оксид серы;
NO2 – оксид азота;
PM10 – взвешенные частицы диаметром 10 микрон;
PM2.5 – взвешенные частицы диаметром 2.5 микрона.
На рисунке 1 представлен набор данных о концентрации веществ в атмосферном воздухе, взятый с ресурса «Kaggle» [1], состоит из 998 наблюдений. Он содержит семь столбцов, в которых первые четыре – это загрязнители, а 5-7 – это ожидаемые результаты.
Рисунок 1. Пример входных данных
Входные данные, которые разделены на две подвыборки: 70% для обучения и 30% для тестированияпредставлены на рисунке 2. Данные хранятся в файле «AQdataset» с расширением «csv» и их считывание происходит посредством использования библиотеки «pandas»[4].
Рисунок 2. Считывание и разбиение данных.
Для обучения в переменную «X»заносятся данные о концентрации вещества в воздухе, а в переменную «Y»- ожидаемые результаты.
Для реализации нейронной сети был создан класс «NeuralNetwork», в котором создаётся входной, выходной и три скрытых слоя. Таким образом получаем трёхслойный персептрон. На рисунке 3 представлены первый, входной, слой содержит 4 нейрона, второй, скрытый, слой –12 нейронов, третий, скрытый, слой – 9, четвёртый, скрытый, слой – 6 и пятый, выходной, слой содержит – 3 нейрона.
Рисунок 3. Создание слоёв.
Далее происходит процесс обучения нейронной сети, представленный на рисунке 4, в котором будут изменены значения весов, которые ранее были заданы случайными значениями.
Рисунок 4. Реализация нейронной сети.
Выходные данные разделяются на две части: полученное и ожидаемое значения и, в случае, если значения не совпадают, то значения весов изменяются и процесс повторяется. Данный процесс, представленный на рисунке 5, проходит 10000 итераций.
Рисунок 5. Обучение нейронной сети.
На данном этапе происходит завершение процесса разработки и обучения нейронной сети, и переход к процессу тестирования.
ТЕСТИРОВАНИЕ НЕЙРОННОЙ СЕТИ
В процессе тестирования на вход подаются данные из тестовой выборки, а на выходе выводит два значения: полученное и ожидаемое. В зависимости от значения, для полученного и ожидаемого, выводится одно из трёх, представленных на рисунках 6,7, сообщений: «Сильное загрязнение АВ», «Умеренное загрязнение АВ», «Допустимое загрязнение АВ».
Рисунок 6. Сообщения для полученного значения
Рисунок 7. Сообщения для ожидаемых значений.
На рисунке 8 представлен процесс сравнения значений и, если они совпадают выводит сообщение «Правильно!» и, в любом случае, переходит к следующей итерации. Процесс длится пока не пройдет всю тренировочную выборку.
Рисунок 8. Тестирование нейросети.
После обработки всех наблюдений программа подсчитывает, коэффициент всех правильных ответов и выводит результат, представленный на рисунке 9.
Рисунок 9. Результат тестирования
ВЫВОДЫ
В статье проанализирована проблема загрязнения атмосферного воздуха.
Был описан набор данных используемый для обучения и тестирования нейронной сети, а также сам процесс разработки, обучения и тестирования нейронной сети.
Полученная в процессе разработки нейронная сеть определяет степень загрязнения атмосферного воздуха с высокой точностью и может быть использована в качестве модуля для датчиков концентрации веществ в воздухе.
СПИСОК ИСТОЧНИКОВ И ЛИТЕРАТУРЫ
1. «Kaggle» AirQualityData [Электронныйресурс]. – Режим доступа:https://www.kaggle.com/shrutibhargava94/india-air-quality-data
2. Высокоуровневый язык программирования Python [Электронный ресурс]. – Режим доступа: https://www.python.org/(дата обращения: 5.12.2018)
3. NumPy (NumericPython). Открытая библиотека для работы большими массивами и матрицами [Электронный ресурс]. – Режим доступа:http://www.numpy.org/
4. Pandas. Открытая библиотека для анализа и обработки данных. [Электронный ресурс]. – Режим доступа:http://pandas.pydata.org/
5. Л.И. Воронова, В.И. Воронов. MachineLearning: Регрессионные методы интеллектуального анализа данных: учебное пособие – МТУСИ, 2018 – 81 с.
6. Федеральный закон от 10.01.2002 N 7-ФЗ (ред. от 31.12.2017) "Об охране окружающей среды"