python - TypeError: unorderable types: float() < str() while using fit_transform of LabelBinarizer
问题描述
我正在尝试使用来自 scikit-learn 的 LabelBinarizer 来处理 pandas DataFrame 的分类字段。
这样做时我收到一个错误
“TypeError:不可排序的类型:float() < str()”
您可以看到下面train_data['embarked']
是一个分类字段,它仅包含 3 个值。但是当我使用LabelBinarizer
时,我得到了提到的错误
train_data['embarked'].head()
train_data['embarked'].value_counts()
from sklearn.preprocessing import LabelBinarizer
labelbinarizer = LabelBinarizer()
lb_result = labelbinarizer.fit_transform(train_data["embarked"])
前两行的输出如下。
0 S
1 C
2 S
3 S
4 S
Name: embarked, dtype: object
S 644
C 168
Q 77
Name: embarked, dtype: int64
导致错误的最后一行。整个错误消息如下所示。
Traceback (most recent call last):
File "<pyshell#20>", line 1, in <module>
lb_result = labelbinarizer.fit_transform(train_data["embarked"])
File "/usr/local/lib/python3.5/dist-packages/sklearn/preprocessing/label.py", line 307, in fit_transform
return self.fit(y).transform(y)
File "/usr/local/lib/python3.5/dist-packages/sklearn/preprocessing/label.py", line 276, in fit
self.y_type_ = type_of_target(y)
File "/usr/local/lib/python3.5/dist-packages/sklearn/utils/multiclass.py", line 284, in type_of_target
if (len(np.unique(y)) > 2) or (y.ndim >= 2 and len(y[0]) > 1):
File "/usr/local/lib/python3.5/dist-packages/numpy/lib/arraysetops.py", line 264, in unique
ret = _unique1d(ar, return_index, return_inverse, return_counts)
File "/usr/local/lib/python3.5/dist-packages/numpy/lib/arraysetops.py", line 312, in _unique1d
ar.sort()
TypeError: unorderable types: float() < str()
我无法理解的这段代码有什么问题?
解决方案
利用astype('str')
lb_result = labelbinarizer.fit_transform(train_data["embarked"].astype('str'))
推荐阅读
- php - 从博客类别存档 url 中删除 /category/ slug
- sql - 修剪表列长度超过 x 个字符
- c++ - cpack 创建 zip 而不在 zip 中创建自命名目录
- ruby-on-rails - 如何使用 ruby 中的单行代码创建从 1 到 n 位的数组
- swift - UIImagePickerController didFinishPickingMediaWithInfo 没有被 cameraOverlyView 调用
- python - Python: Trying to extract and output rows from one csv file to another csv file
- algorithm - 伪代码和除算法
- android - ReactViewGroup 不显示,太大不适合软件布局
- reactjs - 更新表格 React Material UI 中的数据
- javascript - 为什么 JSON.parse(JSON.stringify(obj)) 删除了 obj 的一个属性