Разница между типами bool и int признаках для обучения модели

Есть ли разница в предоставлении модели качественного признака (допустим бинарного мужчина/женщина) в виде true false или в виде 1 0, при учете, что есть еще другие количественные признаки отмасштабированные в диапазон от 0 до 1? (то есть в итоге на вход модели либо подаются все численные признаки, либо один bool + численные)


Ответы (1 шт):

Автор решения: NEStenerus nester

В python bool и int, не имеют по сути разницы. bool приводится к int без проблем, и может использоваться напрямую как int:

print(3 + True)   # 4
print(5 - True)   # 4
print(False + 6)  # 6
print(True * 14)  # 14

a = {True: 6}
print( a[1]) # Выведет 6

b = {False: 6}
print(b[0]) # Выведет 6

Поэтому с точки зрения математики для python нет никакой разницы.

В C++ же, например, разница может быть. Там по сути bool это алиас для числового типа, напрмер int. Однако в C++ разница могла бы быть, потому что некоторые элементы например станадртной библиотеки оптимизированы для использования bool, хоть bool и хранит 0/1, что по сути занимает 1 бит, современные компьютеры индексируют память по байтово, поэтому минимальный размер bool даже в C/C++ будет занимать как минимум 8 бит. Но например динамический массив из 1000 bool будет занимать всего 125 байт, благодаря встроенным оптимизациям:

std::vector<bool> bool_vec(1000); // Размер ~ 125 байт (оптимизации для std::vector<bool>)
std::vector<int> int_vec(1000);  // Размер ~ 4000 байт (32-битный int)

Но это, скорее всего, может быть полезно только для общего развития

→ Ссылка