首页 > 解决方案 > 对数组进行反向 OneHotEncoding

问题描述

我正在使用LabelEncoder并将OneHotEncoder我的分类数据更改为数值数据,但由于我对机器学习还很陌生,所以我做了一些我不应该做的事情OneHotEncoder。所以我想扭转我所做的事情OneHotEncoder

我在 Internet 上进行了一些搜索并尝试过pd.get_dummies(),但是OneHotEncoder将我的数据更改为 9 维我得到了

例外:数据必须是一维的

错误,所以它不起作用。

我还尝试根据我的搜索申请对列进行解码,代码如下所示。

X_level = pd.DataFrame({'1':[1,0,0,0,0,0,0,0,0],'2':[0,1,0,0,0,0,0,0,0],'3':[0,0,1,0,0,0,0,0,0],'4':[0,0,0,1,0,0,0,0,0],'5':[0,0,0,0,1,0,0,0,0],'6':[0,0,0,0,0,1,0,0,0],'7':[0,0,0,0,0,0,1,0,0],'8':[0,0,0,0,0,0,0,1,0],'9':[0,0,0,0,0,0,0,0,1]})
def get_X_level(row):
    for c in X_level.columns:
        if row[c]==1:
            return c
X_level.apply(get_X_level, axis=1)

即使我得到了

0    1
1    2
2    3
3    4
4    5
5    6
6    7
7    8
8    9
dtype: object

因为我希望这在我的阵列上而不是在我的外面。所以它也不能帮助我解决我的问题。

我希望这个结果在我的X_level阵列上而不是在我的 Out 上

标签: pythonpandasnumpy

解决方案


X_level = pd.DataFrame({'1':[1,2,3,4,5,6,7,8,9]})
def get_X_level(row):
    for c in X_level.columns:
        if row [c]==1:
            return c

该代码帮助我解决了我的问题。


推荐阅读