Хобрук: Ваш путь к мастерству в программировании

SKLearn Ordinal Encoder с Pandas Dataframe — доступ к столбцам с помощью переменной

Я пытаюсь реализовать категориальный наивный байесовский классификатор для некоторых данных, которые у меня есть в кадре данных. В моем фрейме данных 173 строки и 38 столбцов. Столбцы представляют категориальные характеристики, такие как степень (например, машиностроение) и тип (например, магистр наук). Есть много других столбцов, и количество/разнообразие столбцов может меняться в зависимости от фрейма данных (например, у человека может быть несколько типов степеней по разным предметам или вообще ни одного. Это представлено как степень1, степень2...). Из-за изменчивости столбцов я хочу отправить переменную в свой кадр данных при использовании порядкового кодировщика. Проблемный код ниже:

def catEnconder(dataframe, *args):
    enc = OrdinalEncoder()
    enc_results = OrdinalEncoder()
    enc.fit([dataframe.columns.astype(str)])
    foo = "\'degree1\', \'type1\'"
    #dfOE = enc.transform(dataframe[['degree1', 'type1']].astype(str)) #This line works perfectly  
     dfOE = enc.transform(dataframe[[foo]].astype(str)) #This line fails. The error appears to be
     #"None of [Index([''degree1', 'type1''], dtype='object')] are in the [columns]" (although they definitely are)   
     dfOE = enc.transform(dataframe[dataframe.columns.astype(str)]) #This line fails. Error: 
     #Found unknown categories ['6D7', '6X1', ....] (these values represent departments that are within the dataframe)
     #Below works perfectly
     if args[0] == True:
         results = enc_results.fit_transform(dataframe[['DecisionDesc_en']].astype(str))
         return dfOE, results
     else:
         return dfOE

Нижняя половина кода работает отлично. Форма моего массива результатов - 173 x 1. Проблема в том, что мне нужно, чтобы мой фрейм данных dfOE был 173 x 38, но, похоже, я не могу заставить OrdinalEncoder принимать мои входные данные. Буду очень признателен за любую помощь в том, как использовать мои столбцы в качестве переменной для моего фрейма данных (или OrdinalEncoder, если проблема именно в этом).

Спасибо, Гэри


Ответы:


1

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

    dfOE = enc.fit_transform(dataframe.astype(str))

-Гэри

21.05.2020
Новые материалы

Dall-E 2: недавние исследования показывают недостатки в искусстве, созданном искусственным интеллектом
DALL-E 2 — это всеобщее внимание в индустрии искусственного интеллекта. Люди в списке ожидания пытаются заполучить продукт. Что это означает для развития креативной индустрии? О применении ИИ в..

«Очень простой» эволюционный подход к обучению с подкреплением
В прошлом семестре я посетил лекцию по обучению с подкреплением (RL) в моем университете. Честно говоря, я присоединился к нему официально, но я редко ходил на лекции, потому что в целом я нахожу..

Освоение информационного поиска: создание интеллектуальных поисковых систем (глава 1)
Глава 1. Поиск по ключевым словам: основы информационного поиска Справочная глава: «Оценка моделей поиска информации: подробное руководство по показателям производительности » Глава 1: «Поиск..

Фишинг — Упаковано и зашифровано
Будучи старшим ИТ-специалистом в небольшой фирме, я могу делать много разных вещей. Одна из этих вещей: специалист по кибербезопасности. Мне нравится это делать, потому что в настоящее время я..

ВЫ РЕГРЕСС ЭТО?
Чтобы понять, когда использовать регрессионный анализ, мы должны сначала понять, что именно он делает. Вот простой ответ, который появляется, когда вы используете Google: Регрессионный..

Не зря же это называют интеллектом
Стек — C#, Oracle Опыт — 4 года Работа — Разведывательный корпус Мне пора служить Может быть, я немного приукрашиваю себя, но там, где я живу, есть обязательная военная служба на 3..

LeetCode Проблема 41. Первый пропущенный положительный результат
LeetCode Проблема 41. Первый пропущенный положительный результат Учитывая несортированный массив целых чисел, найдите наименьшее пропущенное положительное целое число. Пример 1: Input:..