Предсказание возраста морского ушка (морских улиток) по их физическим измерениям.

Морское ушко - распространенное название морских улиток. Определение их возраста - подробный процесс. Их панцирь прорезают через конус, окрашивают и подсчитывают кольца с помощью микроскопа.

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

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

Реализация идеи на cAInvas - здесь!

Набор данных

Данные взяты из оригинального исследования (не связанного с машинным обучением): Уорвик Дж. Нэш, Трейси Л. Селлерс, Саймон Р. Талбот, Эндрю Дж. Коуторн и Уэс Б. Форд (1994) «Популяционная биология морского ушка» ( Haliotis разновидности) в Тасмании. I. Blacklip Abalone ( H. rubra ) с северного побережья и островов пролива Басса », Отдел морского рыболовства, Технический отчет №48 (ISSN 1034–3288)

Репозиторий машинного обучения UCI

Набор данных представляет собой файл CSV, содержащий характеристики 4177 образцов. Каждый образец имеет 9 характеристик - пол, длину, диаметр, рост, общий вес, вес в удалении, вес внутренних органов, вес раковины, кольцо. Из них Ring является целевой переменной, и добавление 1,5 к атрибуту кольца дает нам возраст морского ушка,

Предварительная обработка

Кодирование входных столбцов

Из 8 входных столбцов «Пол» является атрибутом категории со значениями, не зависящими от диапазона. Таким образом, это одна горячая кодировка с использованием функции get_dummies () библиотеки pandas. Параметр drop_first имеет значение True. Это означает, что если в столбце n категорий, возвращается n-1 столбец вместо n. т.е. каждое значение возвращается как массив значений n-1. Первая категория определяется массивом со всеми нулями, в то время как остальные переменные категории n-1 представляют собой массивы с 1 в (i-1) -м индексе массива.

Столбцы с горячим кодированием добавляются к фрейму данных, а исходный столбец атрибута «Пол» удаляется.

Кодирование выходных столбцов

Кольца - это атрибут с непрерывными значениями от 1 до 29. Они разделены на 3 категории: молодые (менее 10), средний возраст (от 10 до 20), старые (от 20 до 30).

Взгляните на разброс ценностей по категориям -

Набор данных несбалансирован с очень небольшим количеством значений в «старой» категории.

Атрибут Rings снова закодирован в горячем режиме с drop_first = False, что приводит к 3 целевым столбцам - молодой, средний возраст и старый. Затем исходный столбец колец удаляется.

Разделение поезд-валидация-тест

Определение столбцов ввода и вывода для использования позже -

Есть 9 входных столбцов и 3 выходных столбца.

Использование соотношения 80–10–10 для разделения фрейма данных на наборы для проверки и проверки. Для этого используется функция train_test_split модуля sklearn.model_selection. Затем они делятся на X и y (ввод и вывод) для дальнейшей обработки.

Стандартизация

Стандартное отклонение значений атрибутов в наборе данных не одинаково для всех из них. Это может привести к тому, что одни атрибуты будут иметь больший вес, чем другие. Значения всех атрибутов масштабируются так, чтобы иметь среднее значение = 0 и стандартное отклонение = 1 по отношению к конкретным столбцам.

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

Модель

Модель проста с 3 плотными слоями, 2 из которых имеют функции активации ReLU, а последний имеет функцию активации softmax, которая выводит диапазон значений, сумма которых равна 1 (значения вероятности для различных категорий).

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

Функция обратного вызова EarlyStopping модуля keras.callbacks отслеживает потерю проверки и останавливает обучение, если она не уменьшается в течение 5 периодов непрерывно. Параметр restore_best_weights гарантирует, что модель с наименьшими потерями при проверке будет восстановлена ​​в переменной модели.

Модель была обучена со скоростью обучения 0,001, а точность ~ 80% была достигнута на тестовой выборке.

Построение матрицы путаницы, чтобы лучше понять результаты -

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

Метрики

Прогноз

Давайте сделаем прогнозы на случайных выборках тестовых данных -

deepC

Библиотека, компилятор и среда вывода deepC предназначены для включения и выполнения нейронных сетей с глубоким обучением путем сосредоточения внимания на функциях устройств малого форм-фактора, таких как микроконтроллеры, eFPGA, процессоры и другие встроенные устройства, такие как raspberry-pi, odroid, Arduino, SparkFun Edge, RISC-V, мобильные телефоны, портативные компьютеры x86 и другие.

Компиляция модели с использованием deepC -

Перейдите на платформу cAInvas (ссылка на записную книжку указана ранее) и проверьте прогнозы в файле .exe!

Авторы: Ayisha D