将嵌套字典的值规范化为 [0,1]
Normalize the values of nested dictionary into [0,1]
输入字典
d = {'PQR':{"LMN":1.345,'PST':1.278,'BQR':2.345,'RMT':9.867},
'HGE':{'VRM':1.765,'TRM':1.567,'FRM':1.456,'DRM':1.678}}
有什么方法可以使用此公式
规范化 [0,1] 范围内的嵌套字典值
(value - min(x))/(max(x)- min(x))
但是,对于规范化,最小值和最大值应该在每个内部字典中找到。
预期输出
output = {'PQR':{"LMN":0.0078006752823378675,'PST':0.0,'BQR':0.12422866457096288,'RMT':1.0},
'HGE':{'VRM':1.0,'TRM':0.3592233009708738,'FRM':0.0,'DRM':0.7184466019417476}}
您可以循环内部字典并相应地改变它们。下面是一个示例方法:
d = {'PQR': {"LMN": 1.345, 'PST': 1.278, 'BQR': 2.345, 'LMN': 9.867},
'HGE': {'VRM': 1.765, 'TRM': 1.567, 'FRM': 1.456, 'DRM': 1.678}}
# Find the normalized value
fn = lambda value, x_max, x_min: (value - x_min) / (x_max - x_min)
# In each inner dict
for _d in d.values():
# find min and max values
max_x = max(_d.values())
min_x = min(_d.values())
# normalize each value in the dict
for k, v in _d.items():
_d[k] = fn(v, max_x, min_x)
print(d)
为您提供如下输出:
{'PQR': {'LMN': 1.0, 'PST': 0.0, 'BQR': 0.12422866457096288}, 'HGE': {'VRM': 1.0, 'TRM': 0.3592233009708738, 'FRM': 0.0, 'DRM': 0.7184466019417476}}
输入字典
d = {'PQR':{"LMN":1.345,'PST':1.278,'BQR':2.345,'RMT':9.867},
'HGE':{'VRM':1.765,'TRM':1.567,'FRM':1.456,'DRM':1.678}}
有什么方法可以使用此公式
规范化 [0,1] 范围内的嵌套字典值(value - min(x))/(max(x)- min(x))
但是,对于规范化,最小值和最大值应该在每个内部字典中找到。 预期输出
output = {'PQR':{"LMN":0.0078006752823378675,'PST':0.0,'BQR':0.12422866457096288,'RMT':1.0},
'HGE':{'VRM':1.0,'TRM':0.3592233009708738,'FRM':0.0,'DRM':0.7184466019417476}}
您可以循环内部字典并相应地改变它们。下面是一个示例方法:
d = {'PQR': {"LMN": 1.345, 'PST': 1.278, 'BQR': 2.345, 'LMN': 9.867},
'HGE': {'VRM': 1.765, 'TRM': 1.567, 'FRM': 1.456, 'DRM': 1.678}}
# Find the normalized value
fn = lambda value, x_max, x_min: (value - x_min) / (x_max - x_min)
# In each inner dict
for _d in d.values():
# find min and max values
max_x = max(_d.values())
min_x = min(_d.values())
# normalize each value in the dict
for k, v in _d.items():
_d[k] = fn(v, max_x, min_x)
print(d)
为您提供如下输出:
{'PQR': {'LMN': 1.0, 'PST': 0.0, 'BQR': 0.12422866457096288}, 'HGE': {'VRM': 1.0, 'TRM': 0.3592233009708738, 'FRM': 0.0, 'DRM': 0.7184466019417476}}