Сегодня я работал над классификатором, чтобы определить, является ли гриб ядовитым, учитывая его особенности. Данные были в файле .csv (считанном в DataFrame pandas), и ссылка на данные находится в конце.
Я использовал функцию train_test_split из sci-kit learn, чтобы разделить данные на наборы для обучения и тестирования.
Затем я удалил столбец, в котором указывалось, является ли гриб ядовитым или нет, для меток обучения и тестирования, и присвоил его значениям yTrain и yTest.
Затем я применил одноразовое кодирование (с использованием pd.get_dummies ()) к данным, поскольку параметры были категориальными.
После этого я нормализовал входные данные для обучения и тестирования.
По сути, входные данные для обучения и тестирования представляли собой отдельный список параметров с горячим кодированием одним, а выходные данные представляли собой список единиц и нулей, представляющих выходные данные (один означал ядовитые, ноль означал съедобные).
Для этого проекта я использовал Keras и простую сеть прямого распространения. Эта сеть состоит из трех уровней; Простой плотный слой (линейный слой для пользователей PyTorch) с 300 нейронами, плотный слой с 100 нейронами и плотный слой с двумя нейронами, каждый из которых представляет вероятность того, что данные параметры гриба означают, что он ядовит, или съедобный. Адам был оптимизатором, который я использовал, а разреженная-категориальная-кроссентропия была моей функцией потерь.
Я тренировал свою сеть 60 эпох. Примерно через 5 эпох потери были практически нулевыми, а моя точность была равна 1. После тренировки я беспокоился, что моя сеть переоснащена, поэтому я попробовал ее на своих отдельных тестовых данных. Результаты были такими же, как данные обучения и проверки; точность была на 100%, и мои потери были незначительны.
Моя потеря валидации в конце 50 эпох составляет 2.258996e-07, а моя потеря в обучении - 1.998715e-07. Моя потеря при тестировании составила 4,732502e-09. Я действительно сбит с толку, неужели потери должны быть такими низкими? Я не думаю, что я переобучаюсь, и моя потеря валидации лишь немного выше, чем моя потеря в тренировке, поэтому я не думаю, что я тоже недостаточно приспособлен.
Кто-нибудь из вас знает ответ на этот вопрос? Прошу прощения, если я совершил какую-то глупую ошибку.
Ссылка на набор данных: https://www.kaggle.com/uciml/mushroom-classification
1 ответ
Кажется, что набор данных Kaggle разрешим в том смысле, что вы можете создать модель, которая дает правильный ответ в 100% случаев (, если верить этим результатам ). Если вы посмотрите на эти результаты, вы увидите, что автору действительно удалось найти модели, которые дают 100% точность, используя несколько методов, включая деревья решений.
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.