我是否需要将布尔值转换为整数才能在机器学习算法中输入它们?

数据挖掘 机器学习 Python 熊猫
2022-03-01 18:06:00

我的数据集包含很多带有布尔值的列,我真的需要更改它们以便将它们插入算法吗?

我现在要使用 KNN,但稍后会测试其他算法,所以我正在尝试准备我的数据集

1个回答

在 Python 中,True并隐False转换为整数:

True == 1     # True!
False == 0    # True!

尽管它们不是相同的对象 - 您可以使用True is 1返回来测试它False

这意味着在纯 Python 中运行的算法无需转换即可工作。许多库/算法的某些部分在后台用 C/C++ 实现,在这种情况下,您可能会遇到问题。

您可以在 Pandas DataFrame 上尝试将模型作为布尔值。如果它崩溃,你知道你必须转换为整数/浮点数。

即使它没有崩溃,您也可以将值转换为整数或浮点数并运行它以进行比较。这是一个简短的例子:

In [1]: import pandas as pd                                                                               
In [2]: df = pd.DataFrame({'a':[0, 2, 3, 4, 5], 'b':[True, False, True, False, False]})
In [3]: df                                                                                                
Out[3]: 
   a      b
0  0   True
1  2  False
2  3   True
3  4  False
4  5  False

将所有内容转换为布尔值

In [4]: df.astype(bool)                                                                                   
Out[4]: 
      a      b
0  False   True
1  True   False
2  True    True
3  True   False
4  True   False

In [5]: df.astype(float)                                                                                  
Out[5]: 
     a    b
0  0.0  1.0
1  2.0  0.0
2  3.0  1.0
3  4.0  0.0
4  5.0  0.0