Визуальный анализ данных с Python и Orange 3
Визуализация данных
Система Orange является инструментом для визуализации и анализа данных с открытым исходным кодом. Интеллектуальный анализ данных проводится путем визуального программирования и с помощью Python сценариев.
На рисунке представлен скриншот главного окна программы Orange3.
Рабочее пространство состоит из виджетов и связей между ними.
Каждый виджет имеет свой тип. Тип виджета можно определить по его иконке.
Виджеты сгруппированы по разделам: Data, Visualization, Predictions и пр. Группа виджета определяет цвет иконки.
Каждый виджет имеет множество (возможно, пустое) входных и множество выходных сигналов. Сигнал определяет данные, которые поступают на вход виджету или являются его результатом. При получении входного сигнала виджет выполняет определенные действия и оповещает связанные с ним виджеты путем отправки им соответсвующих сигналов.
Сигнал представляет собой экземпляр класса-наследника
Orange.util.Reprable
.
Для загрузки датасета имеется множество виджетов. Самый простой (File) считывает данные из файла или загружает по URL. Существуют виджеты для получения данных из базы данных PostgreSQL, Google Docs и других источников.
Скриншот параметров виджета File представлен на рисунке. Виджет позволяет выбрать файл с жесткого диска или загрузить из интернета по URL, а также выводит основные параметры датасета.
Виджет File имеет единственный выходной сигнал Data (тип
Orange.data.Table
). Он связан с единственным входным сигналом Data
виджета Data Table.
Виджет Data Table выводит данные из файла на экран.
При обновлении файла обновляется Data Table. При создании связи между виджетами входной и выходной сигналы выбираются автоматически. Если сигналов виджета много, то могут возникнуть ошибки. Для редактирования связи необходимо дважды кликнуть по ней мышью (рисунок [view1a]).
Связь между двумя виджетами подписывается над стрелкой. Если названия входного и выходного сигнала совпадают, то указывается это название. Если не совпадают, то указываются оба сигнала.
Виджет Scatter Plot позволяет строить двумерные графики по выбранным признакам.
Виджет Scatter Plot имеет три входных сигнала:
Data (
Orange.data.Table
);Data Subset (
Orange.data.Table
);Features (
Orange.widgets.widget.AttributeList
).
Сигнал Data принимает данные для отображения на графике, а сигнал Data Subset – подмножество данных. Если Data Subset определен, то на графике будут заштрихованы точки, соответствующие Data Subset.
Так, можно выбрать некоторые элементы из таблицы данных Data Table, и увидеть, как они расположены на графике по отношению к другим точкам. В примере на рисунке выбраны образы 3, 4, 5, 6.
Можно выделить некоторые точки на графике и изучить значения признаков соответствующих им объектов в таблице.
Система Orange содержит большое количество виджетов для визуализации данных, не рассмотренных выше. Среди них:
Box Plot для построения диаграммы размаха (<<ящик с усами>>);
Distributions для построения диаграммы частотного распределения признака;
Heat Map для построения тепловой диаграммы;
Venn Diagram для построения диаграммы Венна;
Sieve Diagram для построения паркетной диаграммы Ридвиля и Шюпбаха;
Pythagorean Tree и Pythagorean Forest для построения деревьев Пифагора;
Mosaic Display для построения мозаичной диаграммы;
Tree Viewer для визуального представления древовидных структур;
FreeViz и Radviz для визуализации многомерных данных;
и другие.
Тестирование классификаторов
Схема программы для тестирования классификаторов приведена на рисунке.
На форме размещены следующие виджеты:
File для чтения датасета из файла;
Python-скрипты MyNaiveBayes и MyMPF, классификаторы Байеса и методом потенциальных функций;
Test and Score, виджет для сравнения и оценки классификаторов;
Confusion Matrix, Scatter Plot, Classification results виджет для вывода результатов классификации;
MyNaiveBayes и MyMPF подробно рассмотрены в следующем разделе.
Виджет Test and Score принимает следующие входные сигналы @tas:
Data (
Orange.data.Table
) – данные, на которых будет обучена модель;Test Data (
Orange.data.Table
) – данные для проверки модели;Learner (
Orange.classification
) – один или несколько <<учеников>> – обученных моделей классификации, которые будут тестироваться.
В качестве результата виджет имеет следующие выходные сигналы:
Evaluation results (
Orange.evaluation.Results
) – результаты проверки классификаторов;Predictions (
Orange.data.Table
) – размеченная тестовая выборка.
Виджет Test and Score позволяет тестировать классификаторы одним из следующих методов:
кросс-валидация;
выделение одного;
случайная разбивка в заданном соотношении;
проверка на обучающей выборке;
проверка на тестовой выборке.
Проверка классификатора осуществлялась методом случайного деления обучающей выборки в соотношении 33:66, т.е. треть данных была выделена для тестирования. Операция повторится два раза без сохранения промежуточной информации.
Результаты классификации приведены на рисунке.
Были вычислены численные характеристики классификации:
Area under ROC;
Classification accuracy;
F-1;
Precision;
Recall.
Для более детального анализа воспользуемся виджетом Confusion Matrix для сравнения количества правильно и неправильно распознанных образов. Результаты классификации MyMPF и MyNaiveBayes приведены на рисунках.
Образы, которые были подвергнуты классификации приведены на рисунках.
Результаты
Файлы orange-проектов можно скачать по ссылкам: