Как изменить мой OneHotEncoder, чтобы подготовиться к изменениям - PullRequest
2 голосов
/ 10 мая 2019

Таким образом, в настоящее время способ кодирования моих категориальных функций выглядит следующим образом:

# Import the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('weatherHistory_edited.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 6].values

# Encode categorical features
from sklearn.preprocessing import LabelEncoder, OneHotEncoder

labelencoder_X = LabelEncoder()
X[:, 5] = labelencoder_X.fit_transform(X[:,5])
onehotencoder = OneHotEncoder(categorical_features= [5])
X = onehotencoder.fit_transform(X).toarray()

И это прекрасно работает, единственное, что я получаю предупреждение о том, что categoryorical_features является устаревшим ключевым словом в версии 0.20, и будетбыть удаленным в 0,22.Вместо этого вы можете использовать ColumnTransformer.

Так что я переключил последний блок кода на это:

# Encode categorical features
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

columntransformer = ColumnTransformer([("one_hot_encoder", OneHotEncoder(), [5])], remainder= "passthrough")
X = np.array(columntransformer.fit_transform(X))

Теперь, когда я использую этот код, я не получаю ошибку, но мой XМассив полностью запутывается и даже превращается в странный кортеж.

Дополнительная странная часть заключается в том, что при использовании другого набора данных этот код, похоже, работает.Пример:

# Import the libraries
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Importing the dataset
dataset = pd.read_csv('50_Startups.csv')
X = dataset.iloc[:, :-1].values
Y = dataset.iloc[:, 4].values

# Encode categorical features
from sklearn.compose import ColumnTransformer
from sklearn.preprocessing import OneHotEncoder

columntransformer = ColumnTransformer([("one_hot_encoder", OneHotEncoder(), [3])], remainder= "passthrough")
X = np.array(columntransformer.fit_transform(X))

В этом примере значение X получает ожидаемое значение.

Я загрузил наборы данных примера в общедоступное хранилище, чтобы вы могли воссоздать проблему:

https://github.com/BjornPijpops/encoding_issue

...