Python sklearn的OneHotEncoder在传递类别时给出一个ValueError

Python sklearn的OneHotEncoder在传递类别时给出一个ValueError,python,numpy,machine-learning,scikit-learn,one-hot-encoding,Python,Numpy,Machine Learning,Scikit Learn,One Hot Encoding,我有一个类名数组: classes=np.array(['A','B']) 我有一个数据数组(但该数据只包含一个类的实例): 最后,我想对vals数组进行一次热编码,这样就可以解释可能存在其他类的事实。我正在尝试使用sklearn.preprocessing.onehotcoder: ohe = OneHotEncoder(sparse=False, categories=classes) ohe.fit_transform(vals) 但是,当我运行此命令时,会出现以下错误: Traceba

我有一个类名数组:

classes=np.array(['A','B'])

我有一个数据数组(但该数据只包含一个类的实例):

最后,我想对
vals
数组进行一次热编码,这样就可以解释可能存在其他类的事实。我正在尝试使用
sklearn.preprocessing.onehotcoder

ohe = OneHotEncoder(sparse=False, categories=classes)
ohe.fit_transform(vals)
但是,当我运行此命令时,会出现以下错误:

Traceback (most recent call last):
  File "/usr/local/anaconda3/envs/my_project/lib/python3.6/site-packages/IPython/core/interactiveshell.py", line 3331, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-10-08d325b5e8a7>", line 1, in <module>
    ohe.fit_transform(vals)
  File "/usr/local/anaconda3/envs/my_project/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py", line 372, in fit_transform
    return super().fit_transform(X, y)
  File "/usr/local/anaconda3/envs/my_project/lib/python3.6/site-packages/sklearn/base.py", line 571, in fit_transform
    return self.fit(X, **fit_params).transform(X)
  File "/usr/local/anaconda3/envs/my_project/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py", line 347, in fit
    self._fit(X, handle_unknown=self.handle_unknown)
  File "/usr/local/anaconda3/envs/my_project/lib/python3.6/site-packages/sklearn/preprocessing/_encoders.py", line 76, in _fit
    if self.categories != 'auto':
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
回溯(最近一次呼叫最后一次):
文件“/usr/local/anaconda3/envs/my_project/lib/python3.6/site packages/IPython/core/interactiveshell.py”,第3331行,运行代码
exec(代码对象、self.user\u全局、self.user\n)
文件“”,第1行,在
ohe.拟合变换(VAL)
文件“/usr/local/anaconda3/envs/my_project/lib/python3.6/site packages/sklearn/preprocessing/_encoders.py”,第372行,在fit_transform中
return super().fit_变换(X,y)
文件“/usr/local/anaconda3/envs/my_project/lib/python3.6/site packages/sklearn/base.py”,第571行,在fit_transform中
返回self.fit(X,**fit_参数).transform(X)
文件“/usr/local/anaconda3/envs/my_project/lib/python3.6/site packages/sklearn/preprocessing/_encoders.py”,第347行
self.\u fit(X,handle\u unknown=self.handle\u unknown)
文件“/usr/local/anaconda3/envs/my_project/lib/python3.6/site packages/sklearn/preprocessing/_encoders.py”,第76行,in_fit
如果self.categories!='自动':
ValueError:包含多个元素的数组的真值不明确。使用a.any()或a.all()

您可以为编码器安装
,然后安装trasform
VAL

import numpy as np
from sklearn.preprocessing import OneHotEncoder

classes = np.array(['A', 'B'])
vals = np.array(['A', 'A', 'A'])
vals = vals.reshape(-1, 1)

ohe = OneHotEncoder(sparse=False)
ohe.fit(classes.reshape(-1, 1))

ohe.transform(vals)
array([[1., 0.],
       [1., 0.],
       [1., 0.]])
import numpy as np
from sklearn.preprocessing import OneHotEncoder

classes = np.array(['A', 'B'])
vals = np.array(['A', 'A', 'A'])
vals = vals.reshape(-1, 1)

ohe = OneHotEncoder(sparse=False)
ohe.fit(classes.reshape(-1, 1))

ohe.transform(vals)
array([[1., 0.],
       [1., 0.],
       [1., 0.]])