Я попытался предоставить информацию о предварительной обработке данных. Он играет важную роль в разработке модели машинного обучения. Данные очень важны для разработки модели, но они должны быть хорошо обработаны.
Данные играют очень важную роль в разработке моделей машинного обучения. Данные — это все для моделей машинного обучения, и мы даже не можем представить машинное обучение без данных. Ежедневно генерируется около 2,5 квинтиллионов байт данных. Мы можем использовать эти данные для разработки моделей машинного обучения. Но данные плохо обрабатываются, чтобы использовать их напрямую для разработки. Это необработанные данные, и мы должны их предварительно обработать и сделать полезными для разработки моделей. Прежде чем перейти к методам предварительной обработки данных, я хотел бы сказать несколько слов о проблемах и о том, какие именно примеси присутствуют в необработанных данных.
Примеси в необработанных данных
Давайте сначала посмотрим на примеси в необработанных данных, а затем мы увидим методы их устранения.
- Там могут быть пустые данные для конкретной записи. То есть в конкретном экземпляре не будет никакой ценности. Нулевые значения создадут большую проблему при разработке моделей машинного обучения. Конечно, они очень информативны для нас, но не для расчета модели. Итак, нам нужно управлять пустыми или нулевыми значениями или записями. Мы увидим решение для этого позже в этом посте.
- Набор данных, предоставленный для обучения модели, может содержать нечисловые данные. Мы знаем, что машины могут иметь дело только с числовыми данными и не понимают нечисловых данных. Существует более одного метода преобразования нечисловых данных в числовые. Мы увидим это в этом посте.
- Набор данных может содержать бесполезные данные, такие как имя, серийные номера и т. д. Мы должны удалить их из набора данных или не использовать их для обучения модели.
- Может быть большой диапазон для одного атрибута и очень маленький для другого. Иногда это создает проблемы при принятии решения или прогнозировании. Итак, мы должны преобразовать все данные в стандартный диапазон, например, от 0 до 1 или от -1 до 1. Мы увидим методы решения этой проблемы.
Итак, это некоторые проблемы с необработанными данными, и мы не можем использовать этот тип данных для разработки модели машинного обучения. Давайте начнем с решений вышеуказанных проблем один за другим.
Предварительная обработка данных
Я использую титанический набор данных, чтобы объяснить предварительную обработку данных. Нам потребуется библиотека Pandas для внесения изменений в набор данных.
Здесь я импортировал библиотеку Pandas и импортировал файл titanic.csv, используя библиотеку Pandas. Мы также видели метод head() в последнем посте. Он вернет первые 5 записей из набора данных.
Давайте начнем по одному.
1) Бесполезные атрибуты:
Набор данных может иметь атрибуты, бесполезные для разработки модели. Итак, мы просто удалим их из набора данных, и мы готовы идти дальше. Кроме того, мы можем поместить входные данные в одну переменную и выходные данные в другую переменную. Это также решит проблему.
Как показано на изображении выше (набор данных Титаник), есть некоторые атрибуты, такие как PassengerId, Name, Ticket, Cabin и т. д., которые бесполезны для разработки модели. Итак, мы можем просто удалить их.
Существует метод drop(), который используется для удаления атрибутов из набора данных. Кроме того, мы можем поместить входные данные в одну переменную, а вывести в другую, не редактируя импортированный набор данных.
Я надеюсь, что эта проблема будет решена, выполнив любое из вышеперечисленных действий.
2) Нулевые значения:
Если в наборе данных есть нулевые значения, это создаст серьезную проблему при разработке моделей. Мы должны управлять этими нулевыми значениями. Давайте посмотрим на методы управления нулевыми значениями.
Метод info() предоставляет информацию о нулевых значениях и типах данных всех атрибутов, присутствующих в наборе данных. Возможно, вы видели метод len() в Python. Он вернет количество записей в наборе данных. Из приведенного выше набора данных мы ясно видим, что Age, Cabin и Embarked имеют некоторые нулевые значения. Здесь кабина является неиспользуемым атрибутом, поэтому мы не будем о ней заботиться.
- Мы можем просто удалить эту конкретную запись из набора данных и решить эту проблему. Но этот метод не рекомендуется, так как он потеряет информацию.
- Если атрибут этого конкретного столбца или атрибута является числовым и дискретным, то мы можем поместить среднее значение в пустые экземпляры. Это решит проблему числовых и дискретных типов атрибутов. Как видно из приведенного выше изображения, в атрибуте Age есть нулевые значения. Итак, давайте заполним среднее значение возраста нулевыми экземплярами.
Метод fillna() используется для заполнения значения нулевых экземпляров. Мы заполним нулевые значения средним значением атрибута Age и снова запустим метод info(), чтобы проверить нулевые значения. И мы видим, что в атрибуте Age нет нулевого значения.
- Если данные в атрибуте числовые, но категориальные, то мы поместим значение той категории, которая имеет высокую частоту в наборе данных. Как правило, нечисловые данные являются категориальными. Итак, мы можем использовать этот метод для решения проблемы нечисловых категориальных данных. Давайте попробуем управлять нулевыми значениями атрибутов Embarked.
Метод value_counts() будет подсчитывать категориальные значения этого конкретного атрибута. Мы заполним нулевые значения классом с максимальным количеством.
3) Нечисловые данные:
Там могут быть полезные данные, но они в нечисловой форме. Мы знаем, что машины могут понимать только числовые данные. Итак, мы должны преобразовать нечисловые данные в числовые данные. Для этого существует более одного метода, который мы рассмотрим один за другим. В титаническом наборе данных у нас есть атрибут Sex and Embarked в нечисловой форме. Попробуем преобразовать их в числовые.
- Используя метод map(), мы можем сопоставить нечисловые данные с числовыми данными. Посмотрим
Как видно на изображении выше, метод map() принимает словарь с исходным нечисловым значением в качестве ключа и значением, которым мы хотим его заменить, в качестве значения.
- Другой метод, с помощью которого мы можем сделать то же самое, — это replace(). Он работает так же, как и метод map().
Мы можем использовать метод LabelEncoder, который находится в библиотеке sklearn. Он заменит значения числами, начиная с 0 в алфавитном порядке.
В алфавитном порядке первым идет женский пол, поэтому он заменяет женский на 0, а мужской на 1.
- Метод get_dummies() создаст отдельный столбец для каждой категории атрибута. Посмотрим, как этот метод будет работать.
Он добавит столбцы для каждой категории и поместит значение 1, если эта категория есть, и 0 в других столбцах. В приведенном выше примере, если присутствует мужчина, то Sex_male имеет значение 1, а Sex_female имеет значение 0.
Итак, есть несколько способов преобразовать нечисловые данные в числовые. И мы можем решить проблему.
4) Масштабирование признаков означает преобразование всех признаков в одном диапазоне, например, от 0 до 1 или от -1 до 1. Это поможет модели обучаться, а также избежать переобучения. Кроме того, существует более одного метода сделать это. Посмотрим.
- MinMaxScaler():Метод MinMaxScaler() преобразует все числовые данные в диапазоне от 0 до 1.
он будет работать только с числовыми данными, поскольку мы преобразовываем значения в определенном диапазоне, а нечисловые значения не имеют диапазона.
- Метод StandardScaler() преобразует числовые значения в диапазоне от -1 до 1. Его реализация аналогична описанному выше методу.
Надеюсь, вы получили представление о методе StandardScaler().
Это решения вышеуказанных проблем с необработанными данными. Итак, прежде чем передавать данные в модель, мы должны применить методы предварительной обработки данных и преобразовать данные в правильный формат, чтобы модель могла правильно их прочитать и хорошо обучить.
Вывод
Я кратко рассказал о предварительной обработке данных, например, какие проблемы возникают с необработанными данными? как их решить? Кроме того, попытались предоставить демо с кодом. Итак, любой, кто читает этот пост, может с полной уверенностью реализовать предварительную обработку данных.
Код доступен здесь, на GitHub.
Спасибо.
Поделитесь концепциями машинного обучения
Первоначально опубликовано на https://omkarraut.substack.com.