Как сделать Onehotencoding в Sklearn Pipeline

Я пытаюсь oneHotEncode категориальные переменные моего блока данных Pandas, который включает как категориальные, так и продолжающиеся переменные. Я понимаю, что это можно сделать легко с помощью функции pandas .get_dummies (), но мне нужно использовать конвейер, чтобы позже сгенерировать PMML-файл.

Это код для создания картографа. Категориальные переменные, которые я хотел бы кодировать, хранятся в списке под названием «манекены».

from sklearn_pandas import DataFrameMapper from sklearn.preprocessing import OneHotEncoder from sklearn.preprocessing import LabelEncoder mapper = DataFrameMapper( [(d, LabelEncoder()) for d in dummies] + [(d, OneHotEncoder()) for d in dummies] ) 

И это код для создания конвейера, включая отображение и линейную регрессию.

 from sklearn2pmml import PMMLPipeline from sklearn.linear_model import LinearRegression lm = PMMLPipeline([("mapper", mapper), ("regressor", LinearRegression())]) 

Когда я сейчас пытаюсь поместиться (с «функциями», являющимися файловой рамкой, и «целями» серии), она дает ошибку «не может преобразовать строку в float».

 lm.fit(features, targets) 

Кто может мне помочь? Я отчаянно нуждаюсь в рабочих трубопроводах, включая предварительную обработку данных … Спасибо заранее!

One Solution collect form web for “Как сделать Onehotencoding в Sklearn Pipeline”

OneHotEncoder не поддерживает строковые функции, а с [(d, OneHotEncoder()) for d in dummies] вы применяете его ко всем столбцам манекенов. LabelBinarizer этого используйте LabelBinarizer :

 mapper = DataFrameMapper( [(d, LabelBinarizer()) for d in dummies] ) 

Альтернативой может быть использование LabelEncoder со вторым шагом OneHotEncoder .

 mapper = DataFrameMapper( [(d, LabelEncoder()) for d in dummies] ) lm = PMMLPipeline([("mapper", mapper), ("onehot" OnehotEncoder()), ("regressor", LinearRegression())]) 
  • Вычисление функции решения SVM вручную
  • sklearn "numpy.dtype имеет неправильный размер, попробуйте перекомпилировать" как в pycharm, так и в терминале
  • Обнаружение объектов в изображениях (HOG)
  • Могу ли я использовать CountVectorizer в scikit-learn, чтобы подсчитать частоту документов, которые не использовались для извлечения токенов?
  • не может передавать данные массива при вызове сохраненного классификатора
  • Scikit Learn - K-Means - Elbow - критерий
  • scikit KernelPCA неустойчивые результаты
  • Как получить компоненты для LDA в scikit-learn?
  • Python - лучший язык программирования в мире.