将String列转换为整数?

时间:2018-03-01 03:35:25

标签: python algorithm machine-learning

`# Convert string column to integer
def str_column_to_int(dataset, column):
      class_values = [row[column] for row in dataset]
      unique = set(class_values)
      lookup = dict()
      for i, value in enumerate(unique):
        lookup[value] = i
      for row in dataset:
        row[column] = lookup[row[column]]
    return lookup`

上面的代码是将字符串列转换为整数(或一个热编码)的最基本的机器学习片段。但是我很难理解代码esp。 class_values = [row[column] for row in dataset] unique = set(class_values)这两行做了什么使得它可以进行一次热编码?

2 个答案:

答案 0 :(得分:1)

>>> dataset = [
...     [1, 2],
...     [1, 2],
...     [1, 2]
... ]
>>> column = 1
>>> class_values = [row[column] for row in dataset]
>>> class_values
[2, 2, 2]
>>> unique = set(class_values)
>>> unique
{2}

答案 1 :(得分:0)

所以class_values = [row[column] for row in dataset]就是所谓的列表理解。这是在python中创建列表的简便方法。这句话相当于说:

class_values = []
for row in dataset:
    class_values.append(row[column])

这些在Python中非常常见,因此请务必阅读它们并与它们一起练习。它们使您的代码更清晰,节省时间。

可以在此处准备好设置:Sets

简而言之,它们是一个独特的分组。因此,如果您创建一组列表,则会获得一个包含列表中所有唯一值的对象