label_encoder
- это список, который в python представляет собой упорядоченную коллекцию, которую вы можете использовать для хранения любого объекта. Он назван неправильно, он должен быть label_encoders
, шт.
Сначала мы создаем пустой один:
label_encoders = []
Тогда, когда мы сталкиваемся с необходимостью для кодирования колонке
if item.isdigit():
# Don't need to endcode.
else:
# Do need to encode.
мы создаем новый объект preprocessing.LabelEncoder()
и сохраните его для последующего использования
label_encoders.append(preprocessing.LabelEncoder())
Наконец, мы используем последний созданный объект LabelEncoder
на самом деле кодировать столбец
X_encoded[:, i] = label_encoders[-1].fit_transform(X[:, i])
Мы нужно хранить новые LabelEncoder
объектов где, так как мы почти наверняка столкнемся с тестовым набором или новые данные о производстве в будущем, и нужно буду кодировать эти данные таким же образом мы кодировали наши данные обучения.
я, наверное, написал бы такой код, который немного понятнее
label_encoders = []
X_encoded = np.empty(X.shape)
for i, item in enumerate(X[0]):
if item.isdigit():
X_encoded[:, i] = X[:, i]
else:
label_encoder = preprocessing.LabelEncoder()
X_encoded[:, i] = label_encoder.fit_transform(X[:, i])
label_encoders.append(label_encoder)
Спасибо! Я не понял, что preprocessing.LabelEncoder() вернул список.
Это не так! Список происходит от линии
label_encoders = []
preprocessing.LabelEncoder()
вызова возвращает объект LabelEncoder
типа. Это реализует sklearn transformation interface, что позволяет использовать методы fit_transform
и transform
для кодирования ваших функций.
Он добавляет экземпляр «LabelEncoder» в список; этот экземпляр вписывается в последующую строку. (Голосование мигрирует.) –