Реализация классификатора на основе стратегии «один-против-всех» с помощью модели логистической регрессии, без использования специальных библиотек; статистический анализ данных; реализация пакетного градиентного спуска, мини-пакетного градиентного спуска, стохастического градиентного спуска; визуализация данных различными методами
Для копирования файлов Проекта на локальный компьютер в папку <your_dir_on_local_computer> выполните:
$ git clone [email protected]:dbadeev/dslr.git <your_dir_on_local_computer>
- dslr_en.pdf - текст задания
- requirements.txt - список библиотек, необходимый для работы
- datasets - папка с исходными данными + файл evaluate.py для оценки качества построенной модели
- config.sh - скрипт для создания и активации виртуального окружения, установки необходимых библиотек + формирователь документации в формате html
- docs - папка с файлами для генератора документации Sphinx
- maths - папка с библиотекой утилит, используемых в проекте
- functions.py - статистические функции
- logistic_regression.py - модуль, включающий класс Логистической регрессии и вспомогательные функции
- messages - папка с файлами модуля вывода информации о ходе выполнения программы (сообщения об ошибках, окончания работы и т.п.)
- histogram.py - программа отрисовки гистограммы для поиска схожих распределений свойств набора данных по классам
- scatter_plot.py - программа поиска по матрице корреляции и отрисовки диаграммы рассеяния наиболее схожих свойств из набора данных
- pair_plot.py - программа отображения попарных диаграмм рассеяния для свойств в наборе данных
- logreg_train.py - программа обучения модели логистической регрессии
- logreg_predict.py - программа, предсказывающая наиболее вероятный класс по свойствам объекта
- Для работы с Проектом сначала рекомендуется создать и активировать виртуальное окружение, в которое будут устанавливаться необходимые библиотеки.
Для создания и активации виртуального окружения, установки необходимых библиотек и формирования html документации по проекту, из корневой папки в командной строке нужно запустить скрипт config.sh.
$ ./config.sh
Сформированные файлы документации расположены в папке docs/build/html/
Для просмотра документации в браузере нужно открыть файл docs/build/html/index.html
- Для получения информации по статистикам свойств объектов из папки с проектом в командной строки запускается программа describe.py. Для получения расширенной информации используется ключ -e.
$ python3 describe.py -e datasets/dataset_train.csv
Результат работы программы - информация по статистическим характеристикам каждого свойста объектов.
Набор статистических характеристик по которым приводится отчет подробно описан в документации сформированной на предыдущем шаге.
- Для получения изображения гистограмм распределения свойств объектов для каждого из классов по данным из датасета, из папки с проектом в командной строки запускается программа histogram.py
$ python3 histogram.py
Результат работы программы - файл histogram_all.png в корневой папке проекта.
- Для поиска по матрице корреляции и получения изображения диаграмм рассеяния наиболее схожих свойств в наборе данных, из папки с проектом в командной строки запускается программа scatter_plot.py
$ python3 scatter_plot.py
Результат работы программы - файл scatter_plot.png в корневой папке проекта.
- Для получения изображения попарных диаграмм рассеяния свойств в наборе данных, из папки с проектом в командной строки запускается программа pair_plot.py
$ python3 pair_plot.py
Результат работы программы - файл pair_plot.png в корневой папке проекта.
- Для получения информации о параметрах программы обучения модели, из корневой папки проекта нужно выполнить программу logreg_train.py с ключом -h:
$ python3 logreg_train.py -h
usage: logreg_train.py [-h] [--gradient GRAD] [--debug] data
positional arguments:
data Path to train data file
optional arguments:
-h, --help show this help message and exit
--gradient GRAD, -g GRAD
Gradient descent method: "batch" (default), "mini_batch", "sgd"
-
После успешной отработки программы обучения модели в папке datasets/ будет сформирован файл weights.csv, в котором будут записаны найденные веса (параметры) по классам для каждого свойства, отобранного для построения модели.
В случае ошибки, будет выдано соответствующее сообщение. -
Для получения информации о параметрах программы-классификатора, предсказывающей на основе стратегии «один-против-всех» класс, к которому относится объект по его свойствам, из корневой папки проекта нужно выполнить программу logreg_predict.py с ключом -h:
$ python3 logreg_predict.py -h
usage: logreg_predict.py [-h] data weights
positional arguments:
data Path to data file
weights Path to weights file
optional arguments:
-h, --help show this help message and exit
-
После успешной отработки программы-классификатора в папке datasets/ будет сформирован файл houses.csv с результатами предсказаний по каждому объекту из файла с тестовыми данными и на экран выведена информация об окончании работы.
В случае ошибки, будет выдано соответствующее сообщение. -
Для оценки качества модели нужно перейти из корневой папки проекта в папку datasets/, где находятся файлы houses.csv, dataset_truth.csv, а также программа evaluate.py и запустить последнюю:
$ cd datasets
$ python3 evaluate.py
На экран будет выведена информация о количестве объектов в каждом из csv файлов и доля верно предсказанных результатов.
Подробнее о Проекте, анализ данных, примеры использования - по ссылке Wiki (https://github.com/dbadeev/dslr/wiki).
loram (Дмитрий Бадеев) - описание и реализация модели логистической регрессии
gdorcas (Татьяна Смирнова) - реализация статистических функций, программ визуализации, стат анализ, документация с использованием Sphinx
