Pandas 如何检查我的数据是否为热编码数据

Pandas 如何检查我的数据是否为热编码数据,pandas,numpy,machine-learning,scikit-learn,deep-learning,Pandas,Numpy,Machine Learning,Scikit Learn,Deep Learning,如果我有一个数据矩阵,我如何检查分类变量是否是一个热编码的? 我需要使用LIME来解释我的预测,我了解到LIME只有在你有类别标签而不是一个热编码列的情况下才有效。 我找到了转换它的代码,但它只有在编码后才能工作,否则列就会变成NAN 因此,我需要一段代码来查看一个包含数据的numpy数组,并告诉我它是否是一个热编码的。您可以对所有行求和,并查看是否得到一个all1的数组,如下例所示: 示例: X = np.array( [ [1, 0, 0], [0,

如果我有一个数据矩阵,我如何检查分类变量是否是一个热编码的? 我需要使用LIME来解释我的预测,我了解到LIME只有在你有类别标签而不是一个热编码列的情况下才有效。 我找到了转换它的代码,但它只有在编码后才能工作,否则列就会变成NAN


因此,我需要一段代码来查看一个包含数据的numpy数组,并告诉我它是否是一个热编码的。

您可以对所有行求和,并查看是否得到一个all
1
的数组,如下例所示:

示例:

X = np.array(
    [
        [1, 0, 0],
        [0, 1, 0],
        [0, 0, 1],
        [0, 1, 0],
        [1, 0, 0]
    ]
)
print(f'X is one-hot-encoded: {(X.sum(axis=1)-np.ones(X.shape[0])).sum()==0}')
结果:

X is one-hot-encoded: True

根据“”的说法,热编码意味着在一行中应该有一个“1”,其余的“0”。试着编写代码来实现这一点,并将其发布到这里。让您开始:行验证程序可以对值进行排序,然后应始终生成[1,0,0,0,…]@576i请参见下面的答案和注释;一般来说,这是不正确的,因为它隐式地假设数据中只存在一个OHE特征,并且在多个分类特征可能是一个热编码(加上同一行中存在数字特征)的一般情况下,它将不起作用。好的,在这种情况下,为什么不对每个热编码特征重复检查?您仍然可以编写一个基于行的验证器函数。如果您需要更多想法,请确保提供一个合适的、可重复的示例,其中包含您尝试使用的代码。Smart solution,但它隐含地假设
X
由单个(一个热编码)功能组成;在通常情况下,如果存在多个OHE功能,它将不起作用。是的。我混合了分类变量和连续变量