Я пытаюсь предварительно обработать некоторые данные путем горячего кодирования некоторых категориальных данных из библиотеки sklearn.
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
# Importing the dataset
dataset = pd.read_csv('Churn_Modelling.csv')
X = dataset.iloc[:, 3:13].values
y = dataset.iloc[:, 13].values
# Encoding categorical data
from sklearn.preprocessing import OneHotEncoder
onehotencoder = OneHotEncoder(categories =X[:,1].reshape(-1,1))
Если все хорошо, я смогу закодировать данные с помощью
X = onehotencoder.fit_transform(X).toarray()
(верно?), Но возникает эта специфическая ошибка:
ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()
Есть ли что-нибудь, кроме c Я не поступаю правильно? Я проверил документацию https://scikit-learn.org/0.20/modules/generated/sklearn.preprocessing.OneHotEncoder.html#sklearn .preprocessing.OneHotEncoder , но это не помогло мне ...
Есть что-то элементарное, что я делаю неправильно? Мне также очень любопытно, почему эта ошибка появляется, я посмотрел ее, но я не понимаю, что она делает в этом контексте. Пожалуйста, дайте мне знать, если мне нужно предоставить больше информации.
ЧТОБЫ ПРОЯВИТЬ НАБОР ДАННЫХ: у меня есть десять столбцов, в которых я хочу только горячо кодировать категориальные значения для стран (есть три: Франция, Германия и Испания), где остальные столбцы содержат числовые значения.
Одна вещь, которая меня интересует, заключается в том, следует ли для категорий аргументов передавать весь столбец, который нужно кодировать, или если просто дается массив с различными значениями? Так что вместо
onehotencoder = OneHotEncoder(categories =X[:,1].reshape(-1,1))
Нужно ли делать что-то вроде
onehotencoder = OneHotEncoder(categories = np.array(['France','Germany','Spain']).reshape(-1,1))
?
Последнее редактирование: я просто пытаюсь найти «быстрый» способ горячего кодирования указать столбец c во всем наборе данных.
Мне известно, что я всегда мог бы извлечь столбец, который хочу горячим кодированием, запустить простой код для этого столбца и затем вставить его обратно в кадр данных, Я просто надеялся, что смогу найти какой-нибудь код, который можно было бы применить в самых разных ситуациях с минимальным редактированием.
Редактировать: добавить экран печати набора данных: Пример набора данных