Numpy-如何规范数据集中的特定特征



有一组数据混合了连续数据和符号数据,例如:

data = [[duration, protocol, bytes, rate],
[0,        tcp,      215,   0.45],
[4,        udp,      1474,  0.63],
[63,       icmp,     30,    0.07]]

第1列、第3列和第4列是连续的特征,而第2列是象征性的。

有没有一种方法可以在不接触第二列,也不必从数据集中删除第二列的情况下规范化第一列、第三列和第四列?

编辑:对于这个问题,我想通过根据每列的最小值和最大值使每列在0到1之间来规范化数据。

您可以编写一个函数,以您想要的方式规范化特定列,然后在您想要的列上调用它。例如:

import numpy as np
data = np.array([['duration', 'protocol', 'bytes', 'rate'],
[0,           'tcp',      215,     0.45],
[4,           'udp',      1474,    0.63],
[63,          'icmp',     30,      0.07]])
def normalize_column(col):
values = [float(x) for x in data[1:, col]]
minimum = np.min(values)
maximum = np.max(values)
r = maximum - minimum
data[1:, col] = (values - minimum) / r

for col in (0, 2, 3):
normalize_column(col)

data
array([['duration', 'protocol', 'bytes', 'rate'],
['0.0', 'tcp', '0.128116', '0.678571'],
['0.063492', 'udp', '1.0', '1.0'],
['1.0', 'icmp', '0.0', '0.0']], dtype='<U8')

最新更新