У меня есть массив имен классов:
classes = np.array(['A', 'B'])
И у меня есть массив данных (но эти данные содержат только экземпляры одного класса):
vals = np.array(['A', 'A', 'A'])
vals = vals.reshape(len(vals), 1)
Я хочу закончить горячим кодированием для массива vals
, чтобы он учитывал тот факт, что могут быть некоторые другие классы. Я пытаюсь использовать sklearn.preprocessing.OneHotEncoder
:
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()
1 ответ
Вы можете установить кодировщик с помощью classes
, а затем преобразовать vals
:
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.]])
Похожие вопросы
Новые вопросы
python
Python - это многопарадигмальный, динамически типизированный, многоцелевой язык программирования. Он разработан для быстрого изучения, понимания и использования, а также для обеспечения чистого и единообразного синтаксиса. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Тем не менее, для вопросов о Python, связанных с версией, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas и NumPy) включите его в теги.