网上不少人都写到这种错误,但是这种错误的发生环境不一样,原因也完全不一样,这种分类器使用时发生的这种错误之前我也找了很久都没有找到。解决了之后索性记录一下,也希望能帮大家节省时间。
原因
主要就是因为传入分类器的训练数据要求都是float或者int,而你的训练数据中包含其他类型的数据,比如pandas的object或者是bool甚至是NaN。如果你的数据里面所有元素都是可以进行运算的数字(float或者int),那不会出现这种问题。
解决方案
- 先找出传入数据的数据类型不是int或者float的元素。
- 想办法把那些元素的数据类型改成int或float,NaN就填充,实在不行就直接删,然后填充一个float或int数据进去。总之一定要保证你的数据里面所有元素都是可以进行运算的数字。
实例
省去前面数据创建的过程,之后数据的样子会给出来
出现以下错误
看一下数据啥样子
发现c列的数据类型居然都是pandas的Series。
简要说明下为啥:
之前创建的这个训练数据的c列是对前两列数据取众数,我以为返回的是float,没想到居然是个Series。
想必遇到这种问题的人都跟我一样并不完全了解自己的训练数据到底是什么类型。
解决
我是直接把整个c列删了
现在就没有任何问题了。