我已经在所有的预处理数据管道中使用了一段时间的热编码。
但是,现在我遇到了一个问题,因为我正在尝试使用运行模型的烧瓶服务器来自动处理新数据。
我想要做的是搜索新数据中的特定日期、区域和类型,并在其上运行.predict。
当我搜索特定的数据点后,问题就出现了,我必须将列从对象更改为一个热编码的列。
我的问题是,我如何知道哪一列是某一特性中哪个类别的?因为经过一次热编码后,我有大约240列。
发布于 2022-03-21 09:32:36
IIUC,使用get_feature_names_out()
import pandas as pd
from sklearn.preprocessing import OneHotEncoder
df = pd.DataFrame({'A': [0, 1, 2], 'B': [3, 1, 0],
'C': [0, 2, 2], 'D': [0, 1, 1]})
ohe = OneHotEncoder()
data = ohe.fit_transform(df)
df1 = pd.DataFrame(data.toarray(), columns=ohe.get_feature_names_out(), dtype=int)输出:
>>> df
A B C D
0 0 3 0 0
1 1 1 2 1
2 2 0 2 1
>>> df1
A_0 A_1 A_2 B_0 B_1 B_3 C_0 C_2 D_0 D_1
0 1 0 0 0 0 1 1 0 1 0
1 0 1 0 0 1 0 0 1 0 1
2 0 0 1 1 0 0 0 1 0 1
>>> pd.Series(ohe.get_feature_names_out()).str.rsplit('_', 1).str[0]
0 A
1 A
2 A
3 B
4 B
5 B
6 C
7 C
8 D
9 D
dtype: objecthttps://stackoverflow.com/questions/71555321
复制相似问题