OneHotEncoder перестает возвращать преобразованный массив после добавления определенного количества объектов (столбцов категории) - PullRequest
0 голосов
/ 04 июля 2019

Следующий код предназначен для OneHotEncode указанных столбцов (функций). У меня есть 54 функции, и я хочу кодировать их все, но по какой-то причине максимальное количество функций, которые я могу кодировать, равно 25, если я увеличу количество функций для кодирования сверх этого, .fit_transorm () ничего не даст.

import pandas as pd
import numpy as np
import tensorflow as tf
from tensorflow.keras.callbacks import TensorBoard

from sklearn.preprocessing import OneHotEncoder
from sklearn.compose import ColumnTransformer


# ======================== 1 - Importing the data ========================
# - Dataset has 54 features and 1 label (55 columns)
# - 10k examples

datasetPath = "10k-States(0).csv"

dataset = pd.read_csv(datasetPath)

x_train = dataset.iloc[:, 0:54]
y_train = dataset.iloc[:, 54]

# ===================== 2 - Encode x (input) values ======================

# Columns to be encoded (should be 54, but 25 is max that works...)
cols_to_encode = list(range(25))

# 'categories' parameter is multiplied by same number as above, 
# every feature has the same classes (labels)
transformer = ColumnTransformer( 
    [('one_hot_encoder', OneHotEncoder(categories=[[0,1,2,3,4,5]]*25), cols_to_encode)],  
    remainder='passthrough'                                              
)

x = transformer.fit_transform(x_train)

Это вывод, когда у меня есть Dataset variables

Все это нормально, но как только я увеличу до 26 или более столбцов, значение x будет равно (), ничего. Понятия не имею, что происходит ...

1 Ответ

0 голосов
/ 04 июля 2019

Попробуйте использовать это

columnnumberist = [] #insert here all the columns numbers
from sklearn.preprocessing import OneHotEncoder
one = OneHotEncoder(categorical_features = columnnumberlist) #Might get a deprecation warning
X  = one.fit_transform(X)
X=X.toarray()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...