Создание DataSet'a |
||
МЕНЮ Искусственный интеллект Поиск Регистрация на сайте Помощь проекту ТЕМЫ Новости ИИ Искусственный интеллект Разработка ИИГолосовой помощник Городские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Техническое зрение Чат-боты Авторизация |
2019-01-02 02:55 В этой статье мы разберём, как создать DataSet на основе имеющегося .csv файла. Я считаю,что просто .csv файл нельзя назвать датасетом, потому что датасет является уже готовыми к использованию выборками данных(отчасти это неверно, так что тут сугубо моё личное мнение). В Excel он выглядит так: Перед нами стоит задача, основываясь на значениях в DataSet, обучить программу определять должность сотрудника по некоторым признакам. Реализация обучения системы будет в следующей статье, т.к. не хочется делать эту статью слишком долгой. Загрузка Для чтения .csv файла отлично подходит функция read_csv из модуля Pandas. Также импортируем NumPy, он нам в дальнейшем пригодится. Я указал свой путь к файлу, вы указываете тот путь, по которому сохранили этот файл.(его можно найти в https://t.me/notes_of_yound_data_scientist) Результатом выполнения данного фрагмента кода есть: Не обращайте внимания на warning, он возникает из-за того, что в одном столбце присутствуют значения разных типов, позже мы это исправим. Пролистываем вниз и видим, что для последних столбцов все числовые значения равняются нулю. Возможно создатель файла просто не заполнил эти ячейки, а мы же их просто откинем. Воспользуемся срезом: Так мы отбираем 120000 строк, которые полностью нам подходят. Загрузку файла мы совершили, теперь будем с ним работать. Работа со значениями Давайте узнаем, значения каких полей у нас есть: Отлично. Немного посмотрев, что хранится во всех столбцах, можем заметить, что некоторые из них не помогут нам обучить систему. Это имя сотрудника, заметки, порядковый номер в таблице, статус и город, в котором работает сотрудник(все они из Сан-Франциско). Тогда давайте очистим нашу "таблицу" от этих столбцов: Немного отвлечемся. Переменная file является экземпляром класса DataFrame - класса из библиотеки Pandas, где и хранятся все данные. В дальнейшем мы будем пользоваться методами именно этого класса. Теперь к делу. Мы используем метод .drop(), где указываем список названий столбцов, которые надо удалить, ось - 1, т.к. удаляем мы столбцы и игнорирование ошибок при удалении. Отлично. Из прошлой статьи мы знаем, что нам нужны следующие поля: target_names - имена "целей" прогнозирования target - правильные значения для обучения DESCR - описание датасета, сегодня мы оставим его пустым. data - выборки данных feature_names - имена признаков Также нам нужно привести все значения к одному типу. Такие у нас остались только в столбце Benefit, а сами эти значения NaN. Для простоты заменим их на нули. Метод .fillna() заменяет NaN на указанное значение. После того, как все значения в некотором столбце имеют один тип, начинаем формировать "тело" датасета. Сначала выберем target и feature_names. Т.к. определять мы будем именно должность, то значениями ответов будут сами должности. Далее откидываем места работы для дальнейшего упрощения работы. Имена признаков узнаем с помощью такой конструкции, которая возвращает list с названиями столбцов. Достаём значения признаков: data должен принадлежать классу np.array, поскольку только с ним работает модель обучения. Теперь перед нами встаёт вопрос: как представить места работы в числовом виде? Очень просто: закодировать. В ML это имеет своё название: "категориальные признаки". Мы могли бы воспользоваться методом DataFrame, однако давайте всё сделаем "руками": Отлично. Из 120000 выборок у нас 1341 профессия. В среднем это 89 сотрудников, имеющих одинаковую профессию. Также пишем название "цели": Оформление Для того, чтобы облегчить свою работу с DataSet'ом, для хранения значений я выбрал класс NamedTuple из модуля стандартной библиотеки collections. Конструктор класса довольно прост - мы задаем имя "класса", и в следующей строке через пробел его поля. А дальше задаем им значения. Хотя, согласно PEP8, имена переменных пишутся с маленькой буквы, имена переменных, которые ссылаются на объект, который является экземпляром класса NamedTuple задаются как класс(с заглавной буквы в CamelCase). Вот и всё, датасет готов! Предлагаю загрузить его куда-то с помощью модуля pickle: Примечание: согласно РЕР8 модули стандартной библиотеки импортируются в начале файла. Я сделал иначе только для того, чтобы не "раскрывать все карты". Опять же, путь к файлу Вы указываете свой. Вот и всё! Дальше мы создадим модель обучения на основе алгоритма "дерево". Подписывайтесь на телеграмм канал, там будем много интересного. Весь код из статьи здесь. Также рекомендую прочитать статью Понятие машинного обучения и его основные термины Также рекомендую ознакомиться с другими материалами посвященными Машинному обучению и языку программирования Python. Поставь лайк и поделись статьей с друзьями — это лучший способ помочь развитию сообщества. Источник: m.vk.com Комментарии: |
|