Использование LabelEncoder Scikit правильно в нескольких программах

Основная задача, которую я имею под рукой, – это

a) Прочитайте некоторые данные, разделенные вкладкой.

b) Проделайте основную предварительную обработку

c) Для каждого категориального столбца используйте LabelEncoder для создания сопоставления. Это немного похоже на это

 mapper={} #Converting Categorical Data for x in categorical_list: mapper[x]=preprocessing.LabelEncoder() for x in categorical_list: df[x]=mapper[x].fit_transform(df.__getattr__(x)) 

где df – это рамка данных pandas, а categorical_list – список заголовков столбцов, которые необходимо преобразовать.

d) Обучить классификатор и сохранить его на диск с использованием pickle

e) Теперь в другой программе загружена модель.

f) Загружаются тестовые данные и выполняется одна и та же предварительная обработка.

g) LabelEncoder's используются для преобразования категориальных данных.

h) Модель используется для прогнозирования.

Теперь вопрос, который у меня есть, будет ли шаг g) работать правильно?

Как говорится в документации LabelEncoder

 It can also be used to transform non-numerical labels (as long as they are hashable and comparable) to numerical labels. 

Таким образом, каждый хеш входа будет иметь одно и то же значение каждый раз?

Если «Нет», то это хороший способ. Любой способ получить отображения кодера? Или совсем другой путь от LabelEncoder?

2 Solutions collect form web for “Использование LabelEncoder Scikit правильно в нескольких программах”

В соответствии с реализацией LabelEncoder описанный вами конвейер будет работать корректно, если и только если вы fit LabelEncoders во время тестирования с данными, которые имеют точно такой же набор уникальных значений.

Есть несколько хакерский способ повторного использования LabelEncoders, который вы получили во время поездов. LabelEncoder имеет только одно свойство, а именно classes_ . Вы можете разложить его, а затем восстановить

Поезд:

 encoder = LabelEncoder() encoder.fit(X) numpy.save('classes.npy', encoder.classes_) 

Контрольная работа

 encoder = LabelEncoder() encoder.classes_ = numpy.load('classes.npy') # Now you should be able to use encoder # as you would do after `fit` 

Это кажется более эффективным, чем установка его с использованием одних и тех же данных.

Для меня работает LabelEncoder().fit(X_train[col]) , травление этих объектов для каждого категориального столбца col а затем повторное использование тех же объектов для преобразования одного и того же столбца col в наборе данных проверки. В основном у вас есть объект-кодер метки для каждой из ваших категориальных столбцов.

  1. Таким образом, fit() по данным обучения и рассортировать объекты / модели, соответствующие каждому столбцу в учебном X_train .
  2. Для каждого столбца в столбцах проверки установите X_cv , загрузите соответствующий объект / модель и примените преобразование, transform(X_cv[col]) к функции преобразования как: transform(X_cv[col]) .
  • Альтернатива для модели пространства состояний экспоненциального сглаживания r в python / scikit / numpy
  • Сочетание случайных моделей леса в изучении scikit
  • Ошибка метрики Scikit F-score
  • ImportError: нельзя импортировать выбор имени при импорте sklearn.mixture
  • Уменьшение размеров с помощью t-SNE
  • Как вы инициализируете переменную gensim corpus с помощью csr_matrix?
  • Можно ли печатать дерево решений в scikit-learn?
  • Python scikit-learn: не может клонировать объект ... поскольку конструктор, похоже, не задает параметр
  • Python - лучший язык программирования в мире.