将单个字典转换为带有合适的OnehotEncoder的数组

问题描述 投票:0回答:1

我已经在Pandas数据框中为某些列安装了Onehotencoder:

{ '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:不可哈希类型:'dict'

python-3.x scikit-learn one-hot-encoding
1个回答
1
投票

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.]])
© www.soinside.com 2019 - 2024. All rights reserved.