Здравствуйте, читатели, этот блог представляет собой практическую реализацию предварительной обработки данных в наборе данных с использованием 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. Надеюсь, это был информативный блог для вас. Спасибо..!!