Здравствуйте, читатели, этот блог представляет собой практическую реализацию предварительной обработки данных в наборе данных с использованием Python. Если вы еще не ознакомились с предыдущим блогом о предварительной обработке данных, сначала просмотрите его.
Существует 7 ключевых шагов для выполнения предварительной обработки данных для любого типа набора данных, которые я собираюсь объяснить на примере набора данных COVID-19 следующим образом —
1. Получите набор данных
Первым шагом к предварительной обработке данных является получение набора данных, о котором вы хотите создать набор данных. Здесь я хочу создать модель машинного обучения для прогнозирования риска заражения COVID-19 для человека. Итак, мне нужно собрать факторы, по которым я могу обучить свою модель прогнозированию риска.
COVID-19 можно предсказать у человека, анализируя симптомы, историю поездок в горячие точки, возраст и пол.
Для этого я собрал набор данных, который содержит предыдущую информацию о людях, у которых был проведен опрос, задав им несколько вопросов об их возрасте, поле, симптомах и истории поездок в зараженные места, а затем они были протестированы на предмет того, пострадали они или нет. . Вот, мой первый шаг завершен.
2. Импортируйте все важные библиотеки
Теперь начинается основная практическая задача. Мы запускаем нашу IDE Python для выполнения задачи предварительной обработки данных. Для этого я использую Jupyter Notebook of Anaconda. Давайте сначала импортируем все необходимые библиотеки —
импортировать numpy как np
импортировать pandas как pd
из sklearn.preprocessing import LabelEncoder
из sklearn.preprocessing import StandardScaler
из sklearn.model_selection import train_test_split
3. Импорт набора данных
df = pd.read_csv("COVID19.csv")
4. Определите и обработайте пропущенные значения
Давайте определим, содержит ли наш набор данных какие-либо пропущенные значения или нет. См. информацию о каждом столбце набора данных для любого отсутствующего количества значений. Если количество строк в наборе данных не равно ненулевому количеству столбца, в этих столбцах отсутствуют значения.
df.info()
or
df.isnull().sum()
Способы обработки нулевых значений следующие:
+ Удалить нулевые значения
df.isnull().sum()
+ Заменить нулевые значения
Удаление записей, имеющих нулевые значения, означает потерю информации из данных. Поэтому лучше всего заменить нулевые значения центральной тенденцией (среднее/медиана/мода) столбца, в котором они присутствуют.
5. Кодирование данных
Кодирование данных относится к преобразованию данных в форму, понятную машине, которая включает преобразование категориальных данных в числовые данные. Другое кодирование, которое мы можем сделать, это группировка непрерывных значений переменной в определенные интервалы диапазонов, а затем преобразование их в категории в числовые данные. Давайте посмотрим, как мы можем этого добиться —
На приведенном выше рисунке мы видим —
(а) пол: это двоичный категориальный набор данных со значениями «Мужской» и «Женский». Мы можем преобразовать этот столбец в числовые данные с помощью Label Encoder следующим образом:
le = LabelEncoder()
df[“пол”] = le.fit_transform( df[“пол”] )
# «Женщина» : 0 , «Мужчина» : 1 ….Закодировано в алфавитном порядке.
(b) Результат Corona: это наш выходной столбец с 3 значениями, а именно. «Нет риска», «Меньше риска», «Высокий риск». Мы преобразуем этот столбец в числовое значение с помощью LabelEncoder.
le = LabelEncoder()
df[“Результат Corona”] = le.fit_transform( df[“Результат Corona”] )
«Высокий риск»: 0, «Меньший риск»: 1, «Нет риска»: 2
(c) возраст и температура тела: эти 2 значения являются непрерывными. Итак, мы сначала группируем их в ячейки или категориальные данные, а затем используем для них горячее кодирование. Посмотрим, как —
bins= [0,10,20,30,40,50,60,70,80,100]#инициализация ячеек для столбца возраста
labels = ['a','b','c','d','e','f','g','h','i']#initialising метки для бинов
#создание столбца, который группирует все значения возраста в или инициализированные бины
Age = pd.cut(df['age'], bins=bins, labels=labels , right=False)
#создание столбца в наборе данных для нашего сгруппированного столбца Age
df["Age"]=Age
#удаление предыдущего столбца age
df=df.drop(['age'],axis=1)
#делаем то же самое для температуры тела
bins= [96,98,6,102,110]
labels = ['нормально','лихорадка','высокая лихорадка']
Temperature = pd.cut(df['температура тела'], bins=bins, labels=labels, right=False)
df["Temperature"]=Temperature
df=df.drop([' температура тела'],axis=1)
Теперь, используя одну горячую кодировку через манекены панд для преобразования их в числовые значения —
# Применение одноразового кодирования с использованием манекенов pandas.
df=pd.concat([df,pd.get_dummies(df['Возраст'],drop_first=True)],axis=1)
df = df.drop (['Возраст' ],axis=1)
df=pd.concat([df,pd.get_dummies(df['Temperature'],drop_first=True)],axis=1)
df = df.drop (['Temperature' ],axis=1)
df.head()
Теперь все пререкания или очистка данных завершены, так что мы можем перейти к следующему шагу.
6. Разделение набора данных на обучающие и тестовые данные
Теперь пришло время разделить набор данных на данные для обучения и данные для тестирования. Но сначала нам нужно разделить набор данных на X (независимые входы) и y (зависимые выходы).
В нашем наборе данных столбцов —
['Снота', 'пол', 'Сухой кашель', 'боль в горле', 'слабость',
'проблемы с дыханием', 'сонливость', 'боль в груди',
'история путешествия в инфицированные страны», «диабет», «заболевание сердца»,
«заболевание легких», «инсульт или снижение иммунитета», «прогрессирование симптомов»,
«высокое кровяное давление», «заболевание почек», « изменение аппетита»,
«Потеря обоняния», «Результат короны», «b», «c», «d», «e», «f», «g»,
«h», «i», «лихорадка», «высокая лихорадка»]
X = ['пол', 'сухой кашель', 'боль в горле', 'слабость',
'проблемы с дыханием', 'сонливость', 'боль в груди',
'история путешествий в зараженные страны», «диабет», «заболевание сердца»,
«заболевание легких», «инсульт или снижение иммунитета», «прогрессирование симптомов»,
«высокое кровяное давление», «заболевание почек», 'изменение аппетита',
'Потеря обоняния', 'b', 'c', 'd', 'e', 'f', 'g',
'h', 'i', 'лихорадка', 'высокая лихорадка']
y = ['Результат короны']
X = df.drop([‘Результат короны’, ‘Sno’] , axis = 1)
y = df[‘Результат короны’]
Теперь данные нужно разделить на обучающие и тестовые данные —
X_train , X_test , y_train , y_test = train_test_split(X , y , random_state = 2 , test_size = 0,20)
7. Масштабирование обучающих данных
Вот и последний шаг предварительной обработки данных, где мы, наконец, масштабируем входные данные, чтобы модель принимала все входные данные без смещения в сторону одного из них.
ss = StandardScaler()
train = ss.fit_transform(X_train)
Для справки, ссылка на мой
Репозиторий Github — — нажмите здесь
Итак, речь шла о практической реализации предварительной обработки данных в наборе данных Covid-19. Надеюсь, это был информативный блог для вас. Спасибо..!!