Преобразование одного словаря в массив с помощью встроенного OnehotEncoder - PullRequest
0 голосов
/ 02 октября 2019

Я поместил Onehotencoder в кадр данных pandas для некоторых столбцов:

{ 'country', 'female', 'at_weekend' }

Теперь я хочу использовать этот Onehotencoder в одном словаре

{ 'country': 'US', 'female': True, 'at_weekend': True } 

Ограничение состоит в том, чтоЯ не могу использовать панд для преобразования этого словаря. Тем не менее, я могу, конечно, использовать Numpy, и Scikit выучить.

Вот что я попробовал, но это не работает:

object_dict = { 'country': 'US', 'female': True, 'at_weekend': True } 
a = np.array(object_dict)
b = one_hot_encoder.transform(a.reshape(1,-1))

Я получаю эту ошибку

TypeError: unhashable тип: 'dict'

1 Ответ

1 голос
/ 02 октября 2019

Извлеките значения из object_dict (в порядке обучения), затем используйте transform:

import pandas as pd
import numpy as np

from sklearn.preprocessing import OneHotEncoder

df = pd.DataFrame({'country':['US', 'UK'], 'female': [True, False], 'at_weekend':[True,False]})

   at_weekend country  female
0        True      US    True
1       False      UK   False

ohe = OneHotEncoder(sparse=False)
ohe.fit(df)

object_dict = {'country': 'US', 'female': True, 'at_weekend': True} 
arr = np.array([object_dict[k] for k in df.columns], dtype=object)
ohe.transform(arr.reshape(1, -1))

Выход:

array([[0., 1., 0., 1., 0., 1.]])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...