Часто в статистике наборы данных, с которыми мы работаем, включают категориальные переменные .
Это переменные, которые принимают имена или метки. Примеры включают:
- Семейное положение («замужем», «холост», «разведен»).
- Статус курения («курящий», «некурящий»)
- Цвет глаз («голубой», «зеленый», «ореховый»)
- Уровень образования (например, «средняя школа», «бакалавр», «магистр»)
При подборе алгоритмов машинного обучения (таких как линейная регрессия , логистическая регрессия , случайные леса и т. д.) мы часто преобразовываем категориальные переменные в фиктивные переменные , которые представляют собой числовые переменные, используемые для представления категориальных данных.
Например, предположим, что у нас есть набор данных, содержащий категориальную переменную Gender.Чтобы использовать эту переменную в качестве предиктора в регрессионной модели, нам сначала нужно преобразовать ее в фиктивную переменную.
Чтобы создать эту фиктивную переменную, мы можем выбрать одно из значений («Мужской») для представления 0, а другое значение («Женский») для представления 1:

Как создать фиктивные переменные в Pandas
Чтобы создать фиктивные переменные для переменной в кадре данных pandas, мы можем использовать функцию pandas.get_dummies() , которая использует следующий базовый синтаксис:
pandas.get_dummies (данные, префикс = нет, столбцы = нет, drop_first = ложь)
куда:
- data : имя Pandas DataFrame
- prefix : строка, которая добавляется в начало нового столбца фиктивной переменной.
- columns : Имя столбца (столбцов) для преобразования в фиктивную переменную.
- drop_first : Отбрасывать или нет первый столбец фиктивной переменной.
В следующих примерах показано, как использовать эту функцию на практике.
Пример 1. Создание одной фиктивной переменной
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'income': [45, 48, 54, 57, 65, 69, 78],
'age': [23, 25, 24, 29, 38, 36, 40],
'gender': ['M', 'F', 'M', 'F', 'F', 'F', 'M']})
#view DataFrame
df
income age gender
0 45 23 M
1 48 25 F
2 54 24 M
3 57 29 F
4 65 38 F
5 69 36 F
6 78 40 M
Мы можем использовать функцию pd.get_dummies() , чтобы превратить пол в фиктивную переменную:
#convert gender to dummy variable
pd.get_dummies (df, columns=['gender'], drop_first= True )
income age gender_M
0 45 23 1
1 48 25 0
2 54 24 1
3 57 29 0
4 65 38 0
5 69 36 0
6 78 40 1
Половая колонка теперь является фиктивной переменной, где:
- Значение 0 представляет «женщину».
- Значение 1 представляет «Мужской».
Пример 2. Создание нескольких фиктивных переменных
Предположим, у нас есть следующие Pandas DataFrame:
import pandas as pd
#create DataFrame
df = pd.DataFrame({'income': [45, 48, 54, 57, 65, 69, 78],
'age': [23, 25, 24, 29, 38, 36, 40],
'gender': ['M', 'F', 'M', 'F', 'F', 'F', 'M'],
'college': ['Y', 'N', 'N', 'N', 'Y', 'Y', 'Y']})
#view DataFrame
df
income age gender college
0 45 23 M Y
1 48 25 F N
2 54 24 M N
3 57 29 F N
4 65 38 F Y
5 69 36 F Y
6 78 40 M Y
Мы можем использовать функцию pd.get_dummies() для преобразования пола и колледжа в фиктивные переменные:
#convert gender to dummy variable
pd.get_dummies (df, columns=['gender', 'college'], drop_first= True )
income age gender_M college_Y
0 45 23 1 1
1 48 25 0 0
2 54 24 1 0
3 57 29 0 0
4 65 38 0 1
5 69 36 0 1
6 78 40 1 1
Половая колонка теперь является фиктивной переменной, где:
- Значение 0 представляет «женщину».
- Значение 1 представляет «Мужской».
А столбец колледжа теперь является фиктивной переменной, где:
- Значение 0 представляет колледж «Нет».
- Значение 1 представляет колледж «Да».
Дополнительные ресурсы
Как использовать фиктивные переменные в регрессионном анализе
Что такое ловушка с фиктивной переменной?