Разница между типами bool и int признаках для обучения модели
Есть ли разница в предоставлении модели качественного признака (допустим бинарного мужчина/женщина) в виде true false или в виде 1 0, при учете, что есть еще другие количественные признаки отмасштабированные в диапазон от 0 до 1? (то есть в итоге на вход модели либо подаются все численные признаки, либо один bool + численные)
Ответы (1 шт):
В 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)
Но это, скорее всего, может быть полезно только для общего развития