【问题标题】:Can somebody explain how this one hot encoder method works?有人可以解释一下这种热编码器方法是如何工作的吗?
【发布时间】:2019-07-19 07:44:38
【问题描述】:

我在网上得到了这个代码,它可以对一组标签编码值进行热编码。我特别不明白最后一行。请帮忙

我一开始以为在每一个 y 为 1 的地方,它都会将该索引的值替换为 1,但是,如何呢?

def read_dataset():
  df = pd.read_csv("sonar.all-data.csv")
  x = df[df.columns[0:60]].values
  y = df[df.columns[60]]
  encoder = LabelEncoder()
  encoder.fit(y)
  y = oneHotEncode(y)
  return(x, y)

def oneHotEncode(labels):
  n_labels = len(labels)
  n_unique_labels = len(np.unique(labels))
  oneHE = np.zeros((n_labels, n_unique_labels))
  oneHE[np.arange(n_labels), labels] = 1
  return oneHE

我希望了解这段代码的工作原理,但我不明白 np.arange 的那一行

【问题讨论】:

  • 您好,欢迎来到 Stack Overflow!它只是为矩阵创建一个索引列表,在标签指定的列上每行填充 1。但是,并不是本网站预期的那种问题

标签: python tensorflow machine-learning artificial-intelligence data-processing


【解决方案1】:

np.arange()range() 类似,但会创建一个 numpy 数组。因此,如果您有 10 个标签,它会返回一个包含从 0 到 9 的连续数字的数组。这用于选择 oneHE 数组的行(初始化后仅包含零)。 labels 用于选择列。

所以它只是选择所有行中的相应列并将值设置为 1。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-31
    • 1970-01-01
    相关资源
    最近更新 更多