Начав изучать библиотеку Weka я обнаружила, что в Интернете очень мало информации о ней на русском языке – как с ней работать и как ее использовать. Эта статья будет вводной для знакомства с библиотекой.
Что такое WEKA?
Начнем с того, что WEKA – это библиотека для анализа данных и машинного обучения, написанная на Java. Название расшифровывается как Waikato Environment for Knowledge Analysis. Это проект Университета Waikato в Новой Зеландии. Weka представляет собой набор современных алгоритмов машинного обучения и инструментов предварительной обработки данных. Скачать ее можно на сайте.
![Weka Weka](https://habrastorage.org/getpro/habr/upload_files/ecb/7f4/260/ecb7f4260684a95a2ec8d02616e0b10c.png)
Работать в WEKA можно, как через графический интерфейс, так и используя библиотеку в коде. В этой статье мы разберем использование библиотеки с помощью графического интерфейса. Так как изучать что-то новое интереснее и быстрее на практике, то будем учиться пользоваться библиотекой на примере данных, взятых с портала Kaggle.
Загрузка данных в WEKA
Интерфейс WEKA
Открываем Weka. Weka содержит несколько приложений для работы с данными: Explorer, Experimenter, KnowledgeFlow, Workbrench, Simple CLI. Нас интересует Explorer. Это основной графический интерфейс Weka. Explorer содержит 7 различных панелей.
![Интерфейс WEKA Интерфейс WEKA](https://habrastorage.org/getpro/habr/upload_files/1cf/062/a0e/1cf062a0e0d032c71f1cc490b6ab2945.png)
Загрузка данных
Для начала загрузим данные. Делается это на панели Preprocess. Нажимаем Open file… и выбираем нужный файл. Для хранения данных Weka использует формат ARFF. ARFF – это аббревиатура от Attribute-Relation File Format. Файл типа ARFF выглядит следующим образом:
![Данные в формате ARFF Данные в формате ARFF](https://habrastorage.org/getpro/habr/upload_files/261/359/c28/261359c28ea8a67f7458b95c0d1530ab.png)
Файл ARFF состоит из двух частей: в первой части находится информация о данных – список атрибутов и их типы, а во второй части, после @data – сами данные. Первая строка файла – это название самого файла.
Weka также позволяет открывать файлы других типов. Для этого используется конвертер.
Предварительная обработка данных
Предварительная обработка данных проводится на панели Preprocess.
Так, посмотрим на наши данные. Набор данных содержит информацию о воде. Наша задача – создать модель, которая будет предсказывать пригодна ли вода для питья.
Для начала изучим данные. Наш набор данных состоит из 3276 примеров и 10 атрибутов.
![Открытие данных в WEKA Открытие данных в WEKA](https://habrastorage.org/getpro/habr/upload_files/643/051/b1e/643051b1ef7c8aa44c25a9392a46a587.png)
Пропуски
Проверим данные на пропуски. Выбрав атрибут мы видим информацию о нем – значения какого типа он содержит, сколько пропущенных значений и т.д. Проверив все атрибуты мы видим, что пропущенные значения содержат следующие атрибуты: ph, sulfate, trihalomethanes.
Для того, чтобы заполнить пропуски в WEKA существует 2 фильтра: ReplaceMissingValues, который заполняет пропуски модой и средним значением и ReplaceMissingWithUserConstant, который заполняет пропуски заданным пользователем значением. Воспользуемся фильтром ReplaceMissingValues. Найти этот фильтр можно нажав Choose… и выбрав weka→filters→unsupervised→attribute→ReplaceMissingValues. Применим данный фильтр, нажав Apply.
Преобразование типа данных
Для того, чтобы мы могли работать с разными алгоритмами преобразуем тип атрибута potability в номинальный тип. Для этого воспользуемся фильтром NumericToNominal (находится он там же, где и предыдущий) и в настройках фильтра в строке attributeIndices укажем значение last (последний атрибут). Затем нажмем Apply.
Обучение
Выбрать алгоритм машинного обучения для создания модели мы можем на панели Classify.
Результаты обучения в WEKA зависят от типа класса, который мы предсказываем. Например, если мы хотим предсказать тип nominal, то мы получаем точность классификации и матрицу ошибок. А если мы хотим предсказать числовой (numeric) тип, то точность классификации и матрицу ошибок мы не получаем. В этом случае мы оцениваем качество модели по коэффициенту корреляции и другим характеристикам.
Выберем алгоритм RandomForest. Находится он в папке trees.
Для обучения модели будем использовать кросс-валидацию.
Кросс-валидация (перекрестная проверка) – это статистический метод оценки модели. В кросс-валидации данные разбиваются на k подмножеств, которые по очереди используются в обучающей и тестовой выборках. Одно подмножество используется для тестирования, а остальные (k-1) – для обучения. Процедура повторяется k раз и в результате мы получаем усредненные результаты. Задать количество подмножеств в WEKA можно в окошке Folds (по умолчанию там 10).
Оставляем значение по умолчанию и нажимаем Start. В результате мы получаем точность обучения, которая равна 66,88%, матрицу ошибок и другие оценки качества модели.
![Результаты обучения модели Результаты обучения модели](https://habrastorage.org/getpro/habr/upload_files/50b/b5d/2df/50bb5d2df655eeca0cd988a235880fd1.png)
Заключение
Пакет программ WEKA хорошо подходит для тех, кто только начинает изучать интеллектуальный анализ данных и машинное обучение, так как работать в WEKA можно через графический интерфейс, что не требует написание кода. WEKA содержит необходимые инструменты предварительной обработки данных, визуализации данных и алгоритмы машинного обучения.
В установочной папке Weka есть папка data, где находятся наборы данных, которые можно использовать для практики.
Если вам понравилась WEKA и вы хотите изучить ее лучше, то на сайте futurelearn.com есть 3 курса от создателей WEKA – Data Mining with Weka, More Data Mining with Weka, Advanced Data Mining with Weka. К курсам можно присоединиться бесплатно, но тогда доступ к курсам будет ограниченный. Также видеоуроки этих курсов доступны в YouTube.