Математическая модель классификации с использованием системы нечеткого вывода

Нечеткие множества. Основные понятия нечеткой логики, необходимые для моделирования процессов мыслительной деятельности человека. База правил. Формы многоугольных функций принадлежности. Гауссова функция. Системы нечеткого вывода в задачах управления.

Рубрика Экономико-математическое моделирование
Вид реферат
Язык русский
Дата добавления 16.07.2016
Размер файла 844,8 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Реферат

Математическая модель классификации с использованием системы нечеткого вывода

Основные идеи теории нечеткой логики были предложены математиком Л. Заде в его работе "Нечеткие множества" (Zadeh, 1965). Современные работы на эту тему носят скорее прикладной характер, концентрируясь на применении метода в различных областях (Вешнева, 2010; Зак, 2013; Смирнов и Хасанова, 2003; Штовба, 2007).

Появление данной теории позволило описывать качественные и неточные понятия и оперировать ими. Методы моделирования, основанные на теории нечеткой логики, существенно расширяют границы автоматизации, позволяя моделировать процессы мыслительной деятельности человека.

Рассмотрим основные понятия нечеткой логики, необходимые для моделирования рассматриваемого процесса.

Нечеткие множества

Лингвистическая переменная - это переменная, принимающая лингвистические значения, выражающие качественные оценки. Такая переменная может быть любого типа: входная, выходная или переменная состояния. Под лингвистическим значением подразумевают значение лингвистической переменной, выраженное в словесной форме. Например, лингвистическая переменная "частота опозданий" может принимать лингвистическое значение "низкая".

Лингвистическое терм-множество - это множество всех лингвистических значений, которые может принимать некоторая лингвистическая переменная. Также такое множество иногда называют базисным лингвистическим множеством, лингвистической предметной областью, либо пространством значений. Возвращаясь к примеру с переменной "частота опозданий", введем для нее следующее пространство значений Freq={«низкая», «средняя», «высокая»}. Это означает, что частота опозданий может быть низкая, средняя или высокая.

Под нечетким множеством A понимается совокупность упорядоченных кортежей

(1)

а где - степень принадлежности элемента x к A, а - функция отображения пространства X в пространство M. M называется пространством принадлежности и представляет собой интервал [0, 1].

Функция принадлежности

Функция принадлежности отображает область значений числовой переменной X на отрезок [0, 1]:

(2)

Это число называется степенью принадлежности и характеризует степень, с которой элемент x принадлежит множеству A.

Функцию принадлежности можно задать по-разному:

· Графиком или диаграммой для непрерывного и дискретного случая соответственно

· Формулой

· Таблицей значений

· Вектором степеней принадлежности

· Суммой или интегралом

На практике используются различные типы функций принадлежности, но наиболее распространенные - многоугольные (см. Рисунок 1). Главное преимущество таких функций - их простота, для их определения требуется наименьший объем информации. Чтобы задать многоугольную функцию принадлежности требуются данные только лишь об угловых точках.

Рисунок 1 - Формы многоугольных функций принадлежности

Другой вид функции принадлежности - гауссова функция (см. Рисунок 2). Она описывается следующим выражением:

(3)

Рисунок 2 - Гауссова функция

Такая функция задается двумя параметрами - a и b и при этом обладает непрерывной дифференцируемостью, в отличие от многоугольной функции. Однако у гауссовой функции имеется достаточно большой недостаток - она приводит к нарушению условия разбиения единицы. То есть для нее в общем случае не выполняется равенство единице суммы степеней принадлежности для каждого элемента x области определения. Поэтому зачастую используют ассиметричную гауссову функцию, которая включает в себя преимущества простой гауссовой функции. Ассиметричная гауссова функция описывается следующей системой уравнений:

(4)

где m - модальное (среднее) значение.

Для представления крайних множеств можно использовать левую и правую сигмоидальную функцию (см. Рисунок 3).

Рисунок 3 - Сигмоидальная функция

Правая сигмоидальная функция задается следующим уравнением:

(5)

где параметр b задает координату точки, для которой степень принадлежности к нечеткому множеству равна 0.5, а параметр a определяет наклон функции (увеличение параметра соответствует увеличению наклона).

Кроме выше перечисленных функций, для задания функции принадлежности иногда используют гармонические и полиномиальные функции, однако они редко используются на практике из-за своей сложности и объема требуемой информации.

База правил

Правила в базе знаний имеют следующий вид:

ПРАВИЛО_i: ЕСЛИ «Условие_i» ТО «Заключение_i» (Fi),

Где через Fi обозначены коэффициенты определенности или весовые коэффициенты соответствующих правил. А «Условие_i» и «Заключение_i» являются нечеткими высказываниями следующих типов:

1) Высказывание < есть >, где - название переменной, - ее значение, которому соответствует отдельный лингвистический терм.

2) Высказывание < есть >, где - модификатор, которому соответствуют слова "ОЧЕНЬ", "БОЛЕЕ ИЛИ МЕНЕЕ", "НАМНОГО БОЛЬШЕ" и др.

3) Сложные высказывания, образованные из высказываний вида 1. и 2. и нечетких логических операций в форме связок "И", "ИЛИ", "НЕ".

Высказывания второго типа используют лингвистические модификаторы, которым соответствуют операторы нечетких множеств. Существует четыре основных оператора:

· Оператор концентрирования (6)

(6)

Оператору концентрирования соответствует лингвистический модификатор "ОЧЕНЬ". Его действие на треугольную функцию принадлежности нечеткого множества изображено ниже (Рисунок 4).

Рисунок 4 - Оператор концентрирования

· Оператор растяжения (7)

(7)

Оператору концентрирования соответствуют лингвистические модификаторы "СЛЕГКА", "БОЛЕЕ ИЛИ МЕНЕЕ". Он противоположен оператору концентрирования. Ниже представлен пример его действия (Рисунок 5).

Рисунок 5 - Оператор растяжения

· Оператор повышения контрастности (8)

(8)

Повышение контрастности приводит нечеткие множества к четкому виду. Причем большие степени увеличивают контрастность, поскольку при стремлении показателя степени к бесконечности, функция принадлежности принимает прямоугольную форму, что соответствует множеству с четкими границами. Ниже приведен пример действия оператора повышения контрастности (Рисунок 6).

Рисунок 6 - Оператор повышения контрастности

Оператор понижения контрастности (9)

(9)

Данный оператор противоположен операторы повышения контрастности (Рисунок 7). Увеличение показателя степени в данном случае приводит к преобразованию множества в точку, соответствующую его модальному значению.

Рисунок 7 - Оператор понижения контрастности

Рассмотрим основные логические операции с нечеткими высказываниями. Пусть М -- некоторое множество элементарных нечетких высказываний, а -- это отображение истинности высказываний.

1) Логическое отрицание.

Для нечеткого высказывания А отрицание записывается как А ("не А") и определяется формулой (6)

(10)

2) Логическая конъюнкция

Под конъюнкцией нечетких высказываний AB ("A и B") понимается бинарная логическая операция, результатом которой является нечеткое высказывание со степенью истинности вычисляемой по формуле (7).

(11)

3) Логическая дизъюнкция

Под дизъюнкцией нечетких высказываний AB ("A или B") понимается бинарная логическая операция, результатом которой является нечеткое высказывание со степенью истинности вычисляемой по формуле (8).

(12)

4) Нечеткая импликация

Под нечеткой импликацией AB ("из A следует B", "если A то B") понимается бинарная логическая операция, результатом которой является нечеткое высказывание со степенью истинности вычисляемой по одной из формул (9-18):

· Классическая импликация Заде:

(13)

· Нечеткая импликация Мамдани (нечеткая импликация минимума корреляции)

(14)

· Нечеткая импликация Лукасевича

(15)

· Нечеткая импликация Гогена

(16)

· Нечеткая импликация по формуле граничной суммы

(17)

· Нечеткая импликация по формуле произведения

(18)

· Нечеткая импликация Вади

(19)

· Нечеткая импликация Брауэра

(20)

· Нечеткая импликация стандартной логики последовательностей

(21)

Классическая импликация чаще всего применяется при решении прикладных задач, однако остальные способы в определенных задачах оказываются вычислительно более эффективными.

5) Нечеткая эквивалентность

Под эквивалентностью нечетких высказываний AB ("A эквивалентно B") понимается бинарная логическая операция, результатом которой является нечеткое высказывание со степенью истинности вычисляемой по формуле (18).

(22)

Этапы нечеткого вывода

Процесс нечеткого вывода состоит из пяти основных этапов (см. Рисунок 8):

· Формирование базы правил

· Фаззификация входных переменных (введение нечеткости)

· Агрегирование подусловий (необязательный этап)

· Активизация подзаключений

· Аккумулирование заключений (необязательный этап)

Рисунок 8 - Диаграмма деятельности процесса нечеткого вывода

На этапе фаззификации необходимо установить соответствие между четким значением входной переменной и значением функции принадлежности терма из терм-множества соответствующей лингвистической переменной. Для всех входных переменных определяются конкретные значения функций принадлежности по каждому лингвистическому терму из базы правил.

Для каждого подусловия из базы правил вида < есть > рассчитывается значение bi=(ai), где (x) - функция принадлежности терма , а переменная ai - четкое значение входной переменной. Если в подусловиях использовался модификатор, то значение bi рассчитывается аналогично по функции принадлежности, к которой применен соответствующий модификатор.

Далее следует агрегирование. На истинность проверяется каждое условие из базы правил. Если в правилах используются высказывания первого (тип 1) или второго типа (тип 2), то степень истинности соответствующего условия равна bi. Если высказывание третьего типа (тип 3), то вычисляется значение истинности условия на основе истинности каждого из подусловий.

Активизация подразумевает нахождение степени истинности каждого из подзаключений. Если все заключения являются нечеткими логическими высказываниями типа < есть >, а весовые коэффициенты каждого правила равны единице, то степень истинности каждого заключения равна bi, полученному на предыдущем шаге.

На этапе аккумуляции находятся функции принадлежности для каждой выходной лингвистической переменной.

Также может присутствовать этап дефаззификации выходных переменных. То есть получение четкого значения из нечеткого одним из методов:

· Метод центра тяжести (19)

(23)

· Метод центра тяжести для одноточечных множеств (20)

(24)

· Метод центра площади (21)

Центр площади y=u определяется из уравнения:

(25)

· Метод правого модального значения (22)

(26)

где xm - модальное значение нечеткого множества выходной переменной

· Метод левого модального значения (23)

(27)

где xm - модальное значение нечеткого множества выходной переменной

Этот этап необходим, если другие окружающие системы будут использовать выходные данные.

Этапы нечеткого вывода, рассмотренные выше, могут быть неоднозначно реализованы, так как отдельные параметры могут по-разному быть специфицированы. Существуют различные алгоритмы, используемые в системах нечеткого вывода. Наибольше применение получили алгоритм Мамдани и Сугено. Поэтапное отличие данных алгоритмов рассмотрено ниже (см. Таблица 1)

Таблица 1 - Сравнение алгоритмов Мамдани и Сугено

Мамдани

Сугено

Формирование базы правил

Совпадает с рассмотренным выше.

Правила вида:

ЕСЛИ «1 есть '» И «2 есть ''» ТО «w=1a1+2a2», где - весовые коэффициенты, а - значения входных переменных, w - выходная переменная.

Агрегирование подусловий

Используются парные нечеткие логические операции.

Используется min-конъюнкция (7).

Активизация подзаключений

Используется min-активизация (24)

(28)

где (y) - функция принадлежности терма, являющегося значением выходной переменной, ci - степени истинности подзаключений каждого из правил.

Осуществляется расчет не нечетких значений выходных переменных: w=1a1+2a2.

Аккумуляция заключений

Осуществляется по формуле:

где нечеткие множества A и B заданы на универсуме X, к которому принадлежит x.

Фактически отсутствует

Дефаззификация выходных переменных

Методом центра тяжести (19) или методом центра площади (21).

Методом центра тяжести для одноточечных множеств (20).

Для реализации классифицирующей системы нечеткого вывода был выбран алгоритм Мамдани. Этот метод представлен во всех программных средствах, используемых для построения систем нечеткого вывода, также он интуитивно понятен и не ограничивает вид базы правил.

Системы нечеткого вывода в задачах управления

нечеткий множество логика многоугольный

Решение задач управления объектами или процессами является одним из основных направлений практического применения систем нечеткого вывода. Построение моделей в данном случае основывается на представлении характеристик рассматриваемой системы в виде лингвистических переменных, которые являются входными и выходными переменными для проектируемой модели.

В классической теории управления объект и процесс управления представляется в виде некоторых систем (Рисунок 9). Управляемый объект характеризуется конечным множеством входных и выходных параметров. Датчики, используя выходные параметры объекта управления, формируют входные переменные системы нечеткого вывода или системы управления в общем случае. Алгоритм управления в результате работ выдает некоторые выходные переменные, также называемые управляемыми переменными. Полученные выходные переменные комбинируются с входными переменными объекта управления и поступают к нему на вход, изменяя его работу в нужном направлении.

Рисунок 9 - Архитектура компонентов процесса управления с обратной связью

Модель нечеткого вывода

Лингвистические переменные

С точки зрения работодателя, необходимо чтобы сотрудник был на своем рабочем месте в рабочее время. То есть, чтобы длительность и частота его отсутствия на рабочем месте были минимальны. Рассмотрим лингвистические переменные соответствующие данным понятиям.

Лингвистическое терм-множество для переменной «частота опозданий» состоит из трех нечетких множеств: Frequency={«low», «medium», «high»}. Единицей измерения для данной переменной было выбрано количество дней в месяце, поэтому область определения функции интервал [0, 31].

Для обозначения длительности отсутствия было введено две лингвистических переменных: Duration - длительность опозданий и Absence - длительность отсутствия на рабочем месте (включает в себя, перерывы, ранние уходы и прочие отсутствия в течение рабочего дня за исключением опозданий). Лингвистическое терм-множество для переменной Duration={«low», «medium», «high»} (Рисунок 10). Данная переменная измеряется в минутах (диапазон допустимых значений от 0 до 540, где 540 соответствует прогулу 9 часов).

Рисунок 10 - Переменная Duration

Лингвистическое терм-множество для переменной Absence={«low», «medium», «high»}. Данная переменная также измеряется в минутах (диапазон допустимых значений от 0 до 540). Функция принадлежности каждому нечеткому множеству изображена на рисунке (Рисунок 11).

Рисунок 11 - Переменная Absence

Однако, рассмотренные лингвистические переменные имеют различные временныме интервалы измерения. Так переменная Duration устанавливает минуты определенного опоздания, а переменная Frequency соответствует количеству опозданий, суммированному за определенный промежуток времени (месяц в данном случае). Если рассматривать Duration как среднее от величины опоздания за месяц, то переменные будут приведены к одному интервалу, тем не менее, такое изменение переменной существенно снизит качество модели. На пример, рассмотрим сотрудника, который опаздывал три раза на 2 минуты и один раз на 30 минут за месяц, В среднем он опаздывал 4 раза по 9 минут или на 1.2 минуты каждый день, что, как кажется, не критично. Тем не менее, опоздания на 30 минут могут сильно повлиять на рабочий процесс. Поэтому рассмотри подход, используемый человеком в данной ситуации. Наиболее естественным, с точки зрения процесса принятия решения человеком, кажется следующий метод: рассмотрение количества нарушений в каждой из категорий длительности. То есть, разобьем наблюдения для каждого сотрудника по месяцам и по множествам переменной Duration («low», «medium» и «high»), проанализируем данные по каждому разбиению и выведем итоговый номер класса, к которому принадлежит сотрудник. Для реализации данного метода в системе нечеткого вывода необходимо создать 3 пары переменных Duration и Frequency: Dur1 и Freq1, Dur2 и Freq2, Dur3 и Freq3. Переменные Dur1, Dur2 и Dur3 абсолютно идентичны рассмотренной ранее переменной Duration (Рисунок 10), они необходимы только лишь для того, чтобы отдельно учитывать наблюдения в каждой из категорий длительности. Так переменным Dur1 и Freq1 соответсвует множество «low», Dur2 и Freq2 - множество «medium», а Dur3 и Freq3 - множество «high». А переменные Freq1, Freq2 и Freq3 отличаются функциями принадлежности, характеризующими нечеткие множества (Рисунок 12, Рисунок 13, Рисунок 14).

Рисунок 12 - Переменная Freq1

Рисунок 13 - Переменная Freq2

Рисунок 14 - Переменная Freq3

Введение промежуточных переменных визуализирует процесс получения итогового результата, однако такая функция представлена не во всех программах для проектирования систем нечеткого вывода. Рассмотрим структуру системы с промежуточными переменными (Рисунок 15). Переменные Dur1 и Freq1, Dur2 и Freq2, Dur3 и Freq3 попарно объединяются отдельными блоками правил в промежуточные переменные class1, class2 и class3 соответственно. Эти переменные не имеют функций принадлежности, так как в них нет необходимости. Далее три промежуточных класса объединяются в один, и, учитывая переменную Absence, последний блок правил выводит итоговый класс.

Рисунок 15 - Структура системы нечеткого вывода с промежуточными переменными

В качестве выходной переменной рассматривается лингвистическая переменная «класс сотрудника», которая включает в себя 3 множества: «зеленая группа», «желтая группа» и «красная группа». Class={«green», «yellow», «red»}.

· «Красная группа». Сотрудники, время прихода/ухода которых вызывает нарекания, так как это оказывает негативное воздействие на работу.

· «Желтая группа». Сотрудники, время прихода/ухода которых не сильно отклоняется от графика.

· «Зеленая группа». Сотрудники, время прихода/ухода которых соответствует графику и не создает негативных последствий.

База правил

Объединение пар Freq1 и Dur1 в Class1, аналогично парам Freq2, Dur2 в Class2 и Freq3, Dur3 в Class3. Правила предоставлены ниже в матричном виде (см. Таблица 2).

Таблица 2 - Блок правил для Dur1, Freq1, Dur2, Freq2, Dur3, Freq3

Freqi=Low

Freqi=Medium

Freqi=High

Duri=Low

Classi=Green

Classi=Yellow

Classi=Red

Duri=Medium

Classi= Green

Classi= Yellow

Classi= Red

Duri=High

Classi= Green

Classi= Yellow

Classi= Red

Ниже представлен блок правил совместного объединения классов (Таблица 3).

Таблица 3 - Блок правил для промежуточных переменных

Class1

Class2

Class3

Class_all

Green

Green

Green

Green

Green

Green

Yellow

Yellow

Green

Green

Red

Red

Green

Yellow

Green

Yellow

Green

Yellow

Yellow

Red

Green

Yellow

Red

Red

Green

Red

Green

Red

Green

Red

Yellow

Red

Green

Red

Red

Red

Yellow

Green

Green

Green

Yellow

Green

Yellow

Yellow

Yellow

Green

Red

Red

Yellow

Yellow

Green

Yellow

Yellow

Yellow

Yellow

Red

Yellow

Yellow

Red

Red

Yellow

Red

Green

Red

Yellow

Red

Yellow

Red

Yellow

Red

Red

Red

Red

Green

Green

Green

Red

Green

Yellow

Yellow

Red

Green

Red

Red

Red

Yellow

Green

Yellow

Red

Yellow

Yellow

Red

Red

Yellow

Red

Red

Red

Red

Green

Red

Red

Red

Yellow

Red

Red

Red

Red

Red

Последующее объединение с переменной Absence происходит согласно последнему блоку правил (Таблица 4).

Таблица 4 - Блок правил для выходной переменной

Absence

Class_all

Class

low

green

green

low

yellow

yellow

low

red

red

medium

green

yellow

medium

yellow

yellow

medium

red

red

high

green

yellow

high

yellow

red

high

red

red

Но как уже было сказано, не все программные продукты предоставляют возможность использовать промежуточные переменные. В частности, расширение Matlab Fuzzy Logic Toolbox, которое было выбрано для реализации системы нечеткого вывода, не поддерживает использование промежуточных переменных. Поэтому блоки правил были переформированы в базу правил следующего вида:

If (Dur1 is low) and

(Freq1 is medium) and (Freq2 is low) and (Freq3 is low) and (Absence is low) then (Class is green) (1)

В системе Matlab рассмотренное правило кодируются следующим образом:

1 0 0 2 1 1 1, 1 (1): 1,

где первые семь цифр соответствуют номерам термов (low=1, medium=2, high=3, 0 - переменная не используется) каждой из входных лингвистических переменных (Dur1, Dur2, Dur3, Freq1, Freq2, Freq3, Absence), после запятой стоит номер класса (green=1, yellow=2, red=3), в скобках указана степень определенности правила, а после двоеточия способ соединения подусловий (1 соответствует логической операции "and", а 2 - "or"). В приложении находится полный код программной реализации описанной выше системы нечеткого вывода средствами Matlab (Приложение 1).

Исследование применения построенной модели

Входные данные

Данные, поступающие на вход системе нечеткого вывода, имеют определенный формат. Как уже было рассмотрено, система имеет семь входных переменных:

1) Dur1 - средняя длительность опозданий в категории "low"

2) Freq1 - количество опозданий в категории "low"

3) Dur2 - средняя длительность опозданий в категории "medium"

4) Freq2 - количество опозданий в категории " medium "

5) Dur3 - средняя длительность опозданий в категории "high"

6) Freq3 - количество опозданий в категории "high"

7) Absence - средняя длительность отсутствия на рабочем месте

Каждая из переменных вычисляется за один и тот же временной интервал - месяц.

Входные переменные должны формироваться на основе данных, полученных с датчиков контрольно-пропускной системы, которая установлена в организации. Данные с датчиков предоставляют следующую информацию:

· VisitorId - идентификационный номер сотрудника;

· EventDateTime - дата и время прохода через турникет;

· Direction - направление прохода через турникет (0 - вход, 1 - выход).

На основе этой информации внедренная контрольно-пропускная система также автоматически генерирует следующие поля для наилучшего анализа статистики:

· VisitorId - идентификационный номер сотрудника;

· Date - дата;

· FirstEntry - время первого за день входа в здание;

· LastExit - время последнего за день выхода из здания;

· TotalMinutes - общее время пребывания в здании в минутах (равно разности LastExit и FirstEntry или меньше если сотрудник выходил из здания в течение рабочего дня).

Ниже приведен пример записей в автоматически генерируемой таблице (Таблица 5).

Таблица 5 - Пример записей в базе

Id

Date

FirstEntry

TotalMinutes

LastExit

VisitorId

1

23.10.2015

8:58

314

14:11

27

5

23.10.2015

9:49

274

14:22

32

6

23.10.2015

9:02

327

14:28

33

10

23.10.2015

10:30

315

15:53

37

11

23.10.2015

9:02

386

15:27

29

Для предварительного анализа данных использовался язык Python. Он позволяет быстро оперировать большими объемами данных, имеет большое количество библиотек и прост в применении.

Предобработка данных

Исходные данные могут быть "грязными", то есть данными низкого качества. Причиной некачественных данных могут быть различные факторы: ошибки при вводе данных, нестандартные форматы представления данных, результат неудачного удаления записей и другие.

Наиболее часто встречаются следующие виды грязных данных:

· пропущенные значения;

· дубликаты;

· выбросы.

Пропуски в данных могут возникать в связи с тем, что данные не были собраны вообще, или некоторые поля не могут быть заполнены для конкретных наблюдений. Как правило, пропущенные значения либо исключают из выборки, либо игнорируют, либо заполняют чем-либо (средним, модой, новым значением и др.). Рассматриваемые данные не имеют пропусков, что легко проверить подсчетом ненулевых значений (Рисунок 16). Как видно, всего было выгружено 1360 записей и в них нет пропущенных значений.

Рисунок 16 - Проверка на пропуски

Набор наблюдений может включать в себя также продублированные данные, то есть строки, в которых значения всех атрибутов одинаковые. Наиболее правильным подходом будет замена дубликатов на одну уникальную запись.

Библиотека Pandas для языка Python имеет большое количество функций для работы с массивами, в том числе поиск дублирующих строк (Рисунок 17). В исследуемом наборе данных была найдена одна дублирующая запись, которая была удалена (Рисунок 18).

Рисунок 17 - Поиск дублирующих записей

Рисунок 18 - Дубликаты

Анализ выбросов в данных может быть затруднительным, поскольку в данном случае нельзя удалять строки с подозрительными значениями, так как они могут быть информативны.

Исследование полученных данных выявило следующие несоответствия и ошибки:

· Ряд наблюдений, для которых время выхода установлено раньше времени входа (Рисунок 9). Очевидно, это означает, что сотрудник выходил из здания уже после полуночи, а заходил до.

Рисунок 19 - Несоответствие времени входа и выхода

· При рассмотрении основных статистических показателей выявлены очень большие значения и отрицательные значения (Рисунок 10).

Рисунок 20 - Основные статистические показатели численных переменных

Отрицательные значения Absence для записей 726 и 727вызваны необъяснимо большими значениями переменной TotalMinutes (Рисунок 21).

Рисунок 21 - Отрицательны значения Absence

Автоматическая генерация таблицы проходов сотрудников некорректно сформировала запись, так как вход в здание произошел 01.02.16 10:31, а выход 02.02.16 23:09. Для записи 1351 произошла аналогичная ситуация.

При очистке данных от выбросов большую роль играет выявление причин ошибок и выбросов, с чем не всегда могут справиться автоматизированные средства. Для данной задачи не составит труда автоматизировать поиск пропущенных значений и продублированных записей, тогда как автоматизированный поиск выбросов и ошибок может стать достаточно сложной задачей. В случае невозможности автоматизировать поиск выбросов, целесообразно отказаться от переменной Absence, что позволит избежать большинства некорректных значений.

Формирование входных переменных

Чтобы проверить модель из данных были выбраны наблюдения, относящиеся к ноябрю 2015 года.

Датами, по которым происходило формирование входных переменных, были выбраны дни, для которых были записи в базе, кроме выходных. Рассчитано время опозданий и отсутствия, исходя из предположения, что рабочий день начинается в 9:00. Код для расчета входных переменных на Python приведен в приложении (Приложение 2).

В итоге получена таблица со значениями, на которых была опробована модель (Таблица 6).

Таблица 6 - Значения входных переменных

VisitorId

Dur1

Dur2

Dur3

Freq1

Freq2

Freq3

Absence

27

5

15.0

0

2

1

0

147.60

29

5

0

69.0

2

0

3

88.85

30

2

26.5

88.1

1

2

16

42.35

31

0

27.0

180.8

0

1

19

54.45

32

0

0

118.5

0

0

20

122.65

33

0

0

172.0

0

0

1

100.30

34

0

0

181.1

0

0

19

103.00

35

6

23.0

254.1

1

1

8

277.80

36

3

21.0

57.2

1

2

13

80.55

37

0

0

197.8

0

0

20

78.50

38

0

0

436.1

0

0

17

64.80

39

0

0

181.1

0

0

20

131.30

Полученные значения были загружены в Matlab и поданы на вход системе нечеткого вывода:

В результате проведения нечеткого вывода получены значения классов (Таблица 7)

Таблица 7 - Итоговая классификация

VisitorId

Class

27

Yellow

29

Red

30

Red

31

Red

32

Red

33

Yellow

34

Red

35

Red

36

Red

37

Red

38

Red

39

Red

Не смотря на то, что модель работает корректно, для представленных данных она плохо применима. Причиной больших значений для переменных Duration является не отсутствие трудовой дисциплины, а различные графики работ для разных сотрудников.

В связи с этим был испробован подход основанный на том, что среднее время прихода сотрудников стремится к установленному расписанием времени. Были рассчитаны и округлены средние значения времени прихода и ухода сотрудников (Таблица 8), которые использовались для подсчета значений переменной Duration (Таблица 9).

Таблица 8- Округленное среднее время прихода и ухода сотрудников

VisitorId

Entry

Exit

27

09:00:00

17:00:00

29

09:00:00

18:00:00

30

10:00:00

17:00:00

31

11:00:00

18:00:00

32

11:00:00

17:00:00

33

09:00:00

17:00:00

34

10:00:00

19:00:00

35

09:00:00

15:00:00

36

10:00:00

20:00:00

37

11:00:00

18:00:00

38

12:00:00

17:00:00

39

10:00:00

15:00:00

Таблица 9 - Значения переменных

VisitorId

Dur1

Dur2

Dur3

Freq1

Freq2

Freq3

Absence

27

5,00

15,00

0,00

2

1

0

199.45

29

5,00

0,00

69,00

2

0

3

116.60

30

2,50

18,67

540,00

2

3

1

51.60

31

0,00

21,00

312,83

0

2

6

78.70

32

5,67

20,00

177,00

3

3

2

171.35

33

0,00

0,00

172,00

0

0

1

129.80

34

7,00

18,13

299,50

1

8

8

161.30

35

6,00

23,00

254,13

1

1

8

346.80

36

6,67

25,00

0,00

3

1

0

131.05

37

1,00

0,00

218,90

1

0

10

101.60

38

0,00

0,00

460,21

0

0

14

85.15

39

5,00

22,00

464,67

2

1

6

132.00

Полученные результаты не сильно отличаются от предыдущих, только для сотрудника 36 улучшился класс (Таблица 10). Предположительно, это может быть связано с тем, что в разные дни установленное рабочее время отличается. В этом случае необходимо располагать расписанием, исходя из которого рассчитывать входные переменные для системы нечеткого вывода. Такой подход будет оптимальным, однако для него потребуется дополнительная информация.

Таблица 10 - Итоговая классификация

VisitorId

Class

27

Yellow

29

Red

30

Red

31

Red

32

Red

33

Yellow

34

Red

35

Red

36

Green

37

Red

38

Red

39

Red

Для расписания сотрудников также был выполнен расчет (Таблица 11). Сотрудник 38 имеет свободный график, поэтому он был исключен из выборки. Рассчитанные значения переменных не сильно отличаются от полученных для предыдущего метода, однако в целом наблюдается тенденция к снижению переменных Duration и Absence (Таблица 12). Тем не менее, уменьшение переменных не повлияло на результаты классификации: они полностью совпадают с предыдущим методом (Таблица 13).

Таблица 11 - Расписание сотрудников

VisitorId

Start

End

17

9:00:00

17:00:00

27

9:00:00

18:00:00

29

9:00:00

18:00:00

30

10:00:00

19:00:00

31

10:00:00

19:00:00

32

9:00:00

18:00:00

33

9:00:00

18:00:00

34

10:00:00

19:00:00

35

8:00:00

17:00:00

36

10:00:00

19:00:00

37

10:00:00

19:00:00

39

10:00:00

15:00:00

Таблица 12 - Значения переменных для подхода с расписанием

VisitorId

Dur1

Dur2

Dur3

Freq1

Freq2

Freq3

Absence

27

5

15

0

2

1

0

95,8

29

5

0

69

2

0

3

61,1

30

2,5

18,7

540

2

3

1

56,4

31

5

23,3

215,6

3

4

11

53,9

32

0

0

118,6

0

0

20

74,0

33

0

0

172

0

0

1

70,8

34

7

18,1

299,5

1

8

8

61,3

35

8

21,5

234,7

1

4

11

166,3

36

6,7

25

0

3

1

0

43,2

37

6

20,3

191,3

1

3

15

80,7

39

5

22

464,7

2

1

6

1,0

Таблица 13 - Классификация сотрудников с расписанием

VisitorId

Class

27

Yellow

29

Red

30

Red

31

Red

32

Red

33

Yellow

34

Red

35

Red

36

Green

37

Red

39

Red

Перспективы разработки

Данная модель является прототипом экспертной системы, которую следует разработать. Математическая модель работает с данными конкретного формата, поэтому перед вычислением конечных результатов классификации необходимо подготовить входные параметры модели: произвести очистку данных и сформировать переменные. Данный процесс необходимо автоматизировать, что возможно потребует незначительного изменения архитектуры системы нечеткого вывода. Также необходимо выработать форму ежемесячных отчетов, которые бы позволили менеджерам быстро и эффективно анализировать полученные результаты. Полученные формы отчетов следует интегрировать в экспертную систему и настроить их ежемесячное автоматическое формирование.

Кроме того для экспертной системы важна информация о больничных, отпусках и отгулах, которые сделают результаты выводов соответствующими реальной ситуации. Также необходимо включить в систему установленное расписание рабочего времени.

Важной чертой экспертных систем является возможность объяснения полученных результатов. Для этого необходим качественный человеко-машинный интерфейс, который позволит получить детализированную статистику по каждому из сотрудников и пояснить полученные результаты классификации.

Суммируя все вышесказанное, основные перспективы направлены на разработку полноценной экспертной системы, которая позволит эффективно и быстро оценивать статистику посещений.

Список использованной литературы

1. Прикладная статистика: Классификация и снижение размерности / Айвазян С.А., Бухтштабер В.М., Енюков И.С., Мешалкин Л.Д., под ред. С.А. Айвазяна. - М.: Финансы и статистика, 1989. - 607 с.

2. Байесовский классификатор // MachineLearning.ru. URL: http://www.machinelearning.ru/wiki/index.php?title=Байесовский_классификатор (дата обращения: 23.04.16).

3. Бурцев В. В. Внутренний контроль: основные понятия и организация проведения // Менеджмент в России и за рубежом. - 2002. - №. 4. - С. 38-50.

4. Вешнева И. В. Математические модели в системе управления качеством высшего образования с использованием методов нечеткой логики //Саратов: Саратовский источник. - 2010 - 188 с.

5. Воронцов К.В. Лекции по линейным алгоритмам классификации // URL: http://www.ccas.ru/voron/download/Bayes.pdf (дата обращения: 20.04.16).

6. Воронцов К.В. Лекции по логическим алгоритмам классификации. // machinelearning.ru URL: http://www.machinelearning.ru/wiki/images/3/3e/Voron-ML-Logic.pdf (дата обращения: 20.04.16).

7. Воронцов К.В. Лекции по метрическим алгоритмам классификации // URL: http://www. ccas. ru/voron/download/MetricAlgs. pdf. (дата обращения: 20.04.16).

8. Вятченин Д. А. Нечеткие методы автоматической классификации - Минск: Технопринт. - 2004. - 217 с.

9. Герчикова И. Н. Менеджмент. - 4-е изд. - М.: ЮНИТИ, 2010. - 512 с.

10. Дафт Р. Л. Менеджмент. - 6-е изд. - Спб.: Питер, 2009. - 864 с.

11. Десслер Г. Управление персоналом. - М.: Лаборатория базовых знаний - 2013 - 801 с.

12. Джарратано Д., Райли Г. Экспертные системы: принципы разработки и программирование. - 4-е изд. Вильямс, 2007. - 1152 с.

13. Джексон П. Введение в экспертные системы. Издательский дом Вильямс, 2001. - 624 с.

14. Дилигенский Н. В., Дымова Л. Г., Севастьянов П. В. Нечеткое моделирование и многокритериальная оптимизация производственных систем в условиях неопределенности: технология, экономика, экология. - М.: Машиностроение-1, 2004 -397 с.

15. Заде Л. Понятие лингвистической переменной и его применение к принятию приближенных решений. - М.: Мир, 1976. - 164 с.

16. Зак Ю.А. Принятие решений в условиях нечетких и размытых данных. Fuzzy-технологии. - М.: Либроком, 2013. - 352 с.

17. Захаров В. А. О выборе методов построения функций принадлежности для формализации задач принятия решений //Лаборатория специального математического и программного обеспечения (СМПО). Научноисследовательский центр (НИЦ) ВА В ПВО ВС РФ. - 2006.

18. Информационные технологии в экономике // Национальный Открытый Университет «ИНТУИТ» URL: http://www.intuit.ru/studies/courses/3735/977/lecture/14689?page=2 (дата обращения: 26.04.16).

19. Кофман А. Введение в теорию нечетких множеств. - М.: Радио и связь, 1982. - 432 с.

20. Кучеренко Е.И., Корниловский А.В., Глушенкова И.С. О модификации методов оперативной настройки функций принадлежности в знаниеориентированных моделях // Системи обробки інформації. - 2010. - №. 5. - С. 78-81.

21. Леоненков А. В. Нечеткое моделирование в среде MATLAB и fuzzyTECH. - СПб: БХВ-Петербург, 2005. - 736 с.

22. Малышев К.Г., Берштейн Л.С., Боженюк А.В. Нечеткие модели для экспертных систем в САПР. - М,: Энергоатомиздат, 1991. - 136 с.

23. Мескон М., Альберт М., Хедоури Ф. Основы менеджмента. - М.: Дело, 1997. - 704 с.

24. Муромцев Д.И. Введение в технологию экспертных систем. - СПб.: СПб ГУ ИТМО, 2005. - 93 с.

25. Нейронные сети // Электронный учебник по статистике URL: http://www.statsoft.ru/home/textbook/modules/stneunet.html. (дата обращения: 22.04.2016).

26. Нечеткие множества в моделях управления и искусственного интеллекта / Под ред. Д. А. Поспелова. - М.: Наука, 1986. - 312 с.

27. О выборе методов построения функций принадлежности для формализации задач принятия решений // URL: http://www.smolensk.ru/user/sgma/MMORPH/N-12-html/borisov/zakharov/zakharov.htm (дата обращения: 25.06.16).

28. Пегат А. Нечеткое моделирование и управление //М.: Бином. Лаборатория знаний. - 2009. - 798 с.

29. Рутковская Д., Пилиньский М., Рутковский Л. Нейронные сети, генетические алгоритмы и нечеткие системы. - М.: Горячая линия - Телеком, 2006. - 452 с.

30. Смирнов В. А., Хасанова А. А. Особенности реализации системы управления на нечеткой логике // Известия Челябинского научного центра. - 2003. - №. 4. - С. 21.

31. Тэрано Т. Прикладные нёчеткие системы - М.: Мир, 1993 - 368c.

32. Хайкин С. Нейронные сети: полный курс. - 2-е изд. Издательский дом Вильямс, 2006. - 1104 с.

33. Шапиро Д. И. Принятие решений в системах организационного управления: использование расплывчатых категорий. - 2-е изд. - М: Энергоатомиздат, 1983. - 184 с.

34. Штовба С. Д. Обеспечение точности и прозрачности нечеткой модели Мамдани при обучении по экспериментальным данным // Проблемы управления и информатики. - 2007. - №. 4. - С. 102-114.

35. Штовба С. Д. Проектирование нечетких систем средствами MATLAB. - 2-е изд. - М,: Горячая линия-Телеком, 2007. - 288 с.

36. Baleћentis A., Baleћentis T., Brauers W.K.M. Personnel selection based on computing with words and fuzzy MULTIMOORA // Expert Systems with Applications. - 2012. - Vol. 39. No. 9. - P. 7961-7967.

37. Bellman R.E., Zadeh L.A. Decision-making in a fuzzy environment // Management science. - 1970. - Vol. 17. - No. 4. - P. 141-164.

38. Kelemenis A., Ergazakis K., Askounis D. Support managers' selection using an extension of fuzzy TOPSIS // Expert Systems with Applications. - 2011. - Vol. 38. No. 3, P. 2774-2782.

39. Nof S. Y. Springer handbook of automation. - Springer Science & Business Media, 2009.

40. Shakouri G.H., Tavassoli N.Y. Implementation of a hybrid fuzzy system as a decision support process: A FAHP-FMCDM-FIS composition // Expert Systems with Applications. - 2012. - Vol. 39, No. 3, P. 3682-3691.

41. Zadeh, L.A., Fuzzy sets // Information and Control. - 1965. - Vol. 8, No. 3, P. 338-353.

42. Zadeh L. A. Outline of a new approach to the analysis of complex systems and decision processes // Systems, Man and Cybernetics - 1973. - Vol. 3, No. 1. - P. 28-44.

Приложения

Приложение 1

Программный код системы нечеткого вывода в Matlab

[System]

Name='class'

Type='mamdani'

Version=2.0

NumInputs=7

NumOutputs=1

NumRules=81

AndMethod='min'

OrMethod='max'

ImpMethod='min'

AggMethod='max'

DefuzzMethod='centroid'

[Input1]

Name='Dur1'

Range=[0 540]

NumMFs=3

MF1='low':'trapmf',[0 0 5 15]

MF2='medium':'trapmf',[5 15 30 40]

MF3='high':'trapmf',[30 40 540 540]

[Input2]

Name='Dur2'

Range=[0 540]

NumMFs=3

MF1='low':'trapmf',[0 0 5 10]

MF2='medium':'trapmf',[5 15 30 40]

MF3='high':'trapmf',[30 40 540 540]

[Input3]

Name='Dur3'

Range=[0 540]

NumMFs=3

MF1='low':'trapmf',[0 0 5 15]

MF2='medium':'trapmf',[5 15 30 40]

MF3='high':'trapmf',[30 40 540 540]

[Input4]

Name='Freq1'

Range=[0 31]

NumMFs=3

MF1='low':'trapmf',[0 0 2 3]

MF2='medium':'trapmf',[2 3 5 10]

MF3='high':'trapmf',[5 10 31 31]

[Input5]

Name='Freq2'

Range=[0 31]

NumMFs=3

MF1='low':'trapmf',[0 0 0 1]

MF2='medium':'trapmf',[0 1 2 5]

MF3='high':'trapmf',[2 5 31 31]

[Input6]

Name='Freq3'

Range=[0 31]

NumMFs=3

MF1='low':'trapmf',[0 0 0 0]

MF2='medium':'trapmf',[0 1 1 2]

MF3='high':'trapmf',[1 2 31 31]

[Input7]

Name='Absence'

Range=[0 540]

NumMFs=3

MF1='low':'trapmf',[0 0 70 80]

MF2='medium':'trapmf',[70 80 100 120]

MF3='high':'trapmf',[100 120 540 540]

[Output1]

Name='Class'

Range=[0 1]

NumMFs=3

MF1='green':'trimf',[-0.4 0 0.4]

MF2='yellow':'trimf',[0.1 0.5 0.9]

MF3='red':'trimf',[0.6 1 1.4]

[Rules]

0 0 0 1 1 1 1, 1 (1): 1

0 0 0 1 1 1 2, 2 (1): 1

0 0 0 1 1 1 3, 2 (1): 1

0 0 3 1 1 2 1, 2 (1): 1

0 0 3 1 1 2 2, 2 (1): 1

0 0 3 1 1 2 3, 3 (1): 1

0 0 3 1 1 3 1, 3 (1): 1

0 0 3 1 1 3 2, 3 (1): 1

0 0 3 1 1 3 3, 3 (1): 1

0 2 0 1 2 1 1, 2 (1): 1

0 2 0 1 2 1 2, 2 (1): 1

0 2 0 1 2 1 3, 3 (1): 1

0 2 3 1 2 2 1, 3 (1): 1

0 2 3 1 2 2 2, 3 (1): 1

0 2 3 1 2 2 3, 3 (1): 1

0 2 3 1 2 3 1, 3 (1): 1

0 2 3 1 2 3 2, 3 (1): 1

0 2 3 1 2 3 3, 3 (1): 1

0 2 0 1 3 1 1, 3 (1): 1

0 2 0 1 3 1 2, 3 (1): 1

0 2 0 1 3 1 3, 3 (1): 1

0 2 3 1 3 2 1, 3 (1): 1

0 2 3 1 3 2 2, 3 (1): 1

0 2 3 1 3 2 3, 3 (1): 1

0 2 3 1 3 3 1, 3 (1): 1

0 2 3 1 3 3 2, 3 (1): 1

0 2 3 1 3 3 3, 3 (1): 1

1 0 0 2 1 1 1, 1 (1): 1

1 0 0 2 1 1 2, 2 (1): 1

1 0 0 2 1 1 3, 2 (1): 1

1 0 3 2 1 2 1, 2 (1): 1

1 0 3 2 1 2 2, 2 (1): 1

1 0 3 2 1 2 3, 3 (1): 1

1 0 3 2 1 3 1, 3 (1): 1

1 0 3 2 1 3 2, 3 (1): 1

1 0 3 2 1 3 3, 3 (1): 1

1 2 0 2 2 1 1, 2 (1): 1

1 2 0 2 2 1 2, 2 (1): 1

1 2 0 2 2 1 3, 3 (1): 1

1 2 3 2 2 2 1, 3 (1): 1

1 2 3 2 2 2 2, 3 (1): 1

1 2 3 2 2 2 3, 3 (1): 1

1 2 3 2 2 3 1, 3 (1): 1

1 2 3 2 2 3 2, 3 (1): 1

1 2 3 2 2 3 3, 3 (1): 1

1 2 0 2 3 1 1, 3 (1): 1

1 2 0 2 3 1 2, 3 (1): 1

1 2 0 2 3 1 3, 3 (1): 1

1 2 3 2 3 2 1, 3 (1): 1

1 2 3 2 3 2 2, 3 (1): 1

1 2 3 2 3 2 3, 3 (1): 1

1 2 3 2 3 3 1, 3 (1): 1

1 2 3 2 3 3 2, 3 (1): 1

1 2 3 2 3 3 3, 3 (1): 1

1 0 0 3 1 1 1, 1 (1): 1

1 0 0 3 1 1 2, 2 (1): 1

1 0 0 3 1 1 3, 2 (1): 1

1 0 3 3 1 2 1, 2 (1): 1

1 0 3 3 1 2 2, 2 (1): 1

1 0 3 3 1 2 3, 3 (1): 1

1 0 3 3 1 3 1, 3 (1): 1

1 0 3 3 1 3 2, 3 (1): 1

1 0 3 3 1 3 3, 3 (1): 1

1 2 0 3 2 1 1, 2 (1): 1

1 2 0 3 2 1 2, 2 (1): 1

1 2 0 3 2 1 3, 3 (1): 1

1 2 3 3 2 2 1, 3 (1): 1

1 2 3 3 2 2 2, 3 (1): 1

1 2 3 3 2 2 3, 3 (1): 1

1 2 3 3 2 3 1, 3 (1): 1

1 2 3 3 2 3 2, 3 (1): 1

1 2 3 3 2 3 3, 3 (1): 1

1 2 0 3 3 1 1, 3 (1): 1

1 2 0 3 3 1 2, 3 (1): 1

1 2 0 3 3 1 3, 3 (1): 1

1 2 3 3 3 2 1, 3 (1): 1

1 2 3 3 3 2 2, 3 (1): 1

1 2 3 3 3 2 3, 3 (1): 1

1 2 3 3 3 3 1, 3 (1): 1

1 2 3 3 3 3 2, 3 (1): 1

1 2 3 3 3 3 3, 3 (1): 1

Приложение 2

Программный код формирования входных переменных на Python

In [1]:

import pandas

from datetime import datetime, timedelta, time

data = pandas.read_csv('data_nov.csv')

data['Entry']=map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"), data['Entry'])

data['Exit']=map(lambda x: datetime.strptime(x, "%Y-%m-%d %H:%M:%S"), data['Exit'])

data['EntryDate']=map(lambda x: datetime.date(x), data['Entry'])

# рассматриваем только дни, в которые кто-то был, кроме выхдоных

dates=data['EntryDate'].unique()

dates = [x for x in dates if x.weekday() < 5]

persons=data['VisitorId'].unique()

#формирование таблицы для каждого рабочего дня

data_input=pandas.DataFrame()

t=time(9,0) #время начала работы 9:00

for i in dates:

for j in persons:

cond=(data['VisitorId']==j) & (data['EntryDate']==i)

if len(data[cond])==0:

ab=0

entry=None

exit=None

entry_int=NaN

exit_int=NaN

else:

ab=data[cond].iloc[0].Absence

entry=data[cond].iloc[0].Entry

exit=data[cond].iloc[0].Exit

entry_int=datetime.time(entry).hour+datetime.time(entry).minute/60.0

exit_int=datetime.time(exit).hour+datetime.time(exit).minute/60.0

data_input=data_input.append([[i, j, ab, entry, exit, entry_int, exit_int]])

data_input.columns=(['Date', 'VisitorId', 'Absence', 'Entry', 'Exit', 'Entry_int', 'Exit_int'])

#удаление работника только для актуального расписания

data_input=data_input[data_input['VisitorId']<>38]

data_input = data_input.reset_index(drop=True)

#фиксированный рабочий день

#schedule=pandas.DataFrame(index=data_input['VisitorId'].unique())

#schedule['start']=time(9,0)

#schedule['end']=time(18,0)

#метод округленного среднего

#schedule=data_input[['Entry_int','Exit_int', 'VisitorId']].groupby('VisitorId').mean()

#schedule['Entry_int']=map(lambda x: round(x), schedule['Entry_int'])

#schedule['Exit_int']=map(lambda x: round(x), schedule['Exit_int'])

#schedule['start']=map(lambda x: time(int(x),int(math.modf(x)[0]*60)), schedule['Entry_int'])

#schedule['end']=map(lambda x: time(int(x),int(math.modf(x)[0]*60)), schedule['Exit_int'])

#актуальное расписание

schedule = pandas.read_csv('schedule.csv', sep=';', index_col='Id')

schedule['start']=map(lambda x: time(x,0), schedule['start'])

schedule['end']=map(lambda x: time(x,0), schedule['end'])

#расчет длительности опозданий и отсутсвия

dur=list()

ab=list()

for i in data_input.index:

if data_input.loc[i].Entry==None:

dur.append(540)

ab.append(0)

else:

dur.append((data_input.loc[i].Entry-datetime.combine(data_input.loc[i].Date, schedule.loc[data_input.loc[i].VisitorId].start)).total_seconds()/60)

if data_input.loc[i].Exit< datetime.combine(data_input.loc[i].Date, schedule.loc[data_input.loc[i].VisitorId].end):#ранний уход

ind.append(True)

ab.append((datetime.combine(data_input.loc[i].Date, schedule.loc[data_input.loc[i].VisitorId].end)-data_input.loc[i].Exit).total_seconds()/60)

else:

ab.append(0)

data_input['Duration']=dur

#преобразуем отрицательные значения в нулевые

data_input['Duration'] = map(lambda x: x if x>=0 else 0, data_input['Duration'])

data_input['Absence']+=ab

#заполнение переменных Dur1, Dur2, Dur3 для каждой даты

data_input['Dur1']=NaN

data_input.loc[(data_input['Duration']<10) & (data_input['Duration']!=0), 'Dur1']=data_input.loc[(data_input['Duration']<10) & (data_input['Duration']!=0), 'Duration']

data_input['Dur2']=NaN

data_input.loc[(data_input['Duration']>=10) & (data_input['Duration']<=35), 'Dur2']=data_input.loc[(data_input['Duration']>=10) & (data_input['Duration']<=35), 'Duration']

data_input['Dur3']=NaN

data_input.loc[data_input['Duration']>35, 'Dur3']=data_input.loc[data_input['Duration']>35, 'Duration']

#группировака полученных данных по сотрудникам, формирование фходных переменных

group_count=data_input.groupby('VisitorId').count()

group_mean=data_input.groupby('VisitorId').mean()

fis_input3=pandas.DataFrame(group_count.index)

fis_input3=pandas.concat((group_mean[['Dur1', 'Dur2', 'Dur3']], group_count[['Dur1', 'Dur2', 'Dur3']], group_mean[['Absence']]), axis=1)

fis_input3.columns=['Dur1', 'Dur2', 'Dur3', 'Freq1', 'Freq2', 'Freq3', 'Absence']

#Заполнение пропусков и сохранение в файл

fis_input3=fis_input3.fillna(0)

fis_input3.to_csv(path_or_buf='fis_input3.csv', header=False, index=False)

Размещено на Allbest.ru


Подобные документы

  • Описание основных положений нечеткой логики: функций принадлежности, лингвистические переменные, база правил нечетких высказываний. Деревья решений и типы решаемых задач. Степень принадлежности примеров к атрибутам. Механизмы анализа нечеткой информации.

    контрольная работа [1,4 M], добавлен 30.01.2015

  • Понятие и структура интеллектуальной системы. Математическая теория нечетких множеств. Причины распространения системы Fuzzy-управления. Предпосылки для внедрения нечетких систем управления. Принципы построения системы управления на базе нечеткой логики.

    реферат [68,3 K], добавлен 31.10.2015

  • Треугольное нечеткое число с центром в точке. Наиболее важные нечеткие импликации. Поиск на множестве векторных оценок отношения эквивалентности, которое однозначно определяет искомое разбиение. Формирование базы правил для нечеткого классификатора.

    курсовая работа [1,9 M], добавлен 11.04.2014

  • Понятия теории нечетких систем, фаззификация и дефаззификация. Представление работы нечетких моделей, задача идентификации математической модели нечеткого логического вывода. Построение универсального аппроксиматора на основе контроллера Мамдани-Сугено.

    курсовая работа [897,5 K], добавлен 29.09.2010

  • Исследование источников неопределенности в управлении сложными процессами. Неточность задания значений входных данных. Определение основных причин неопределенности. Характеристика понятия нечеткого множества. Описания нечетких моделей в принятии решений.

    презентация [67,3 K], добавлен 15.10.2013

  • Построение функции принадлежности нечеткого числа. Выполнение операций над нечеткими цифрами с треугольным представлением. Операции над числами на основе принципа обобщения. Значение границ и вершины результата. Выражение для функции принадлежности.

    контрольная работа [314,2 K], добавлен 02.06.2014

  • Структура многоуровневой системы. Математическая модель конфликтной ситуации с выбором описания и управляющих сил. Понятия стабильности и эффективности. Оценка конкурентоспособности производственного предприятия на основе статической модели олигополии.

    дипломная работа [1,6 M], добавлен 23.09.2013

  • Основные понятия математических моделей и их применение в экономике. Общая характеристика элементов экономики как объекта моделирования. Рынок и его виды. Динамическая модель Леонтьева и Кейнса. Модель Солоу с дискретным и непрерывным временем.

    курсовая работа [426,0 K], добавлен 30.04.2012

  • Основные категории и критерии инструментальных средств, предназначенных для моделирования информационных систем. Проведение анализа предметной области проекта автомастерской массового обслуживания и построение математической модели данной системы.

    курсовая работа [1,3 M], добавлен 18.08.2012

  • Основные математические модели макроэкономических процессов. Мультипликативная производственная функция, кривая Лоренца. Различные модели банковских операций. Модели межотраслевого баланса Леонтьева. Динамическая экономико-математическая модель Кейнса.

    контрольная работа [558,6 K], добавлен 21.08.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.