我正在尝试将具有多个列的数据表编码为一组给定的类别
ohe1 = OneHotEncoder(categories = [list_names_data_rest.values],dtype = 'int8')
data_rest1 = ohe1.fit_transform(data_rest.values).toarray()
在这里,list_names_data_rest.values
是形状的数组(664,)。我有664个独特功能,我正在尝试将data_rest
编码为(5050,6)。编码后,我希望有一个形状(5050,664)
我是对预定义功能集的一种热编码,因为我正在分块下载数据集(由于ram限制),我希望神经网络的输入形状保持一致
如果我使用pd.get_dummies
,则根据我的数据集,我可以为NN获得不同的类别和不同的输入形状
ohe1.fit_transform
确实需要一个形状(n_values,n_features),但是我不知道如何处理。
答案 0 :(得分:0)
HashingVectorizer
可能是一个适合您的情况的解决方案。它与输入功能的数量无关,只需将初始大小设置为足够大即可。
答案 1 :(得分:0)
如果您希望使用pd.get_dummies
,则可以选择为每个批次迭代地添加编码。
第一批:
ohe = pd.get_dummies(data_rest, columns=['label_col'])
对于每个后续批次:
for b in batches:
batch_ohe = pd.get_dummies(b, columns=['label_col'])
ohe = pd.concat([ohe, batch_ohe], axis=0)
ohe = ohe.fillna(0)