Python如何在使用一个热编码/pd.get_假人后反转实际值

Python如何在使用一个热编码/pd.get_假人后反转实际值,python,pandas,data-science,categorical-data,one-hot-encoding,Python,Pandas,Data Science,Categorical Data,One Hot Encoding,我正在使用 警察局,去拿傻瓜 将具有4个标签(字符串)的分类向量转换为具有4列的二维数组。 然而,之后我找不到一种方法来恢复原始值。 使用时我也不能这样做 sklearn.preprocessing.OneHotEncoder 什么是一个热编码类别向量的最佳wat,但之后能够反转原始值?您可以使用sklearn.preprocessing.onehotcoder的逆变换方法来执行此操作。我已经用下面的一个例子说明了这一点: from sklearn.preprocessing import On

我正在使用

警察局,去拿傻瓜

将具有4个标签(字符串)的分类向量转换为具有4列的二维数组。 然而,之后我找不到一种方法来恢复原始值。 使用时我也不能这样做

sklearn.preprocessing.OneHotEncoder


什么是一个热编码类别向量的最佳wat,但之后能够反转原始值?

您可以使用
sklearn.preprocessing.onehotcoder的
逆变换
方法来执行此操作。我已经用下面的一个例子说明了这一点:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male'], ['Female'], ['Female']]
enc.fit(X)
enc.categories_

[array(['Female', 'Male'], dtype=object)]

enc.transform([['Female'], ['Male']]).toarray()

array([[1., 0.],
       [0., 1.]])

enc.inverse_transform([[0, 1], [1,0], [0, 1]])

array([['Male'],
       ['Female'],
       ['Male']], dtype=object)
要将类别设置为关键字典,可以执行以下操作:

A = {}
for i in enc.categories_[0]:
    A[i] = enc.transform([[i]]).toarray()
但是有更好的方法可以做到这一点


希望这有帮助

您可以使用
sklearn.preprocessing.onehotcoder
inverse\u transform
方法来执行此操作。我已经用下面的一个例子说明了这一点:

from sklearn.preprocessing import OneHotEncoder
enc = OneHotEncoder(handle_unknown='ignore')
X = [['Male'], ['Female'], ['Female']]
enc.fit(X)
enc.categories_

[array(['Female', 'Male'], dtype=object)]

enc.transform([['Female'], ['Male']]).toarray()

array([[1., 0.],
       [0., 1.]])

enc.inverse_transform([[0, 1], [1,0], [0, 1]])

array([['Male'],
       ['Female'],
       ['Male']], dtype=object)
要将类别设置为关键字典,可以执行以下操作:

A = {}
for i in enc.categories_[0]:
    A[i] = enc.transform([[i]]).toarray()
但是有更好的方法可以做到这一点


希望这有帮助

您可以找到行的最大值并将其替换为该列名。 将numpy作为np导入 作为pd进口熊猫

df = pd.DataFrame({"A":[0,1,0,0],"B":[1,0,0,0],"C":[0,0,1,0], "D":[0,0,0,1]})

def decode(row):
    for c in df.columns:
        if row[c]==1:
            return c


df = df.apply(decode,axis=1)
print(df)
输出:

0    B
1    A
2    C
3    D
dtype: object

您可以找到行的最大值并将其替换为该列名。 将numpy作为np导入 作为pd进口熊猫

df = pd.DataFrame({"A":[0,1,0,0],"B":[1,0,0,0],"C":[0,0,1,0], "D":[0,0,0,1]})

def decode(row):
    for c in df.columns:
        if row[c]==1:
            return c


df = df.apply(decode,axis=1)
print(df)
输出:

0    B
1    A
2    C
3    D
dtype: object

你可以在这里提出一个类似的问题。你可以在这里提出一个类似的问题。是否有方法将类别打印到键词典?是否有方法将类别打印到键词典?