如何 min_max 规范化数据

Posted

技术标签:

【中文标题】如何 min_max 规范化数据【英文标题】:How to min_max normalize data 【发布时间】:2020-05-04 08:25:50 【问题描述】:

在 K-Nearest Neighbors 分类的上下文中,我需要对字典中的多个值进行最小-最大标准化。我通过获取值,将它们拆分为单独的列表,在这些列表上运行 min-max normalize 函数并再次将列表压缩在一起来做到这一点。见下文。我想有更聪明的方法吗?

dataset = 'a':[1, 200], 'b':[1.5, 180], 'c':[0.8, 80], 'd':[1.2, 150]
values = dataset.values()
value_1 = [i[0] for i in values] 
value_2 = [i[1] for i in values]

def min_max_normalize(lst):
  minimum = min(lst)
  maximum = max(lst)
  normalized = []
  for i in range(len(dataset)):
    normalized_value = (lst[i] - minimum)/(maximum - minimum)
    normalized.append(normalized_value)
  return normalized

value_1_normalized = min_max_normalize(value_1)
value_2_normalized = min_max_normalize(value_2)
values_normalized = zip(value_1_normalized, value_2_normalized)

【问题讨论】:

【参考方案1】:

为什么不使用来自 scikit-learn 的 MinMaxScaler

from sklearn.preprocessing import MinMaxScaler
dataset = 'a':[1, 200], 'b':[1.5, 180], 'c':[0.8, 80], 'd':[1.2, 150]
vals = list(dataset.values())
scl = MinMaxScaler().fit(vals)
scl.transform(vals)
# array([[0.28571429, 1.        ],
#        [1.        , 0.83333333],
#        [0.        , 0.        ],
#        [0.57142857, 0.58333333]])

记住只适合您的训练集,然后您可以将scl.transform 应用于您的测试集。

【讨论】:

以上是关于如何 min_max 规范化数据的主要内容,如果未能解决你的问题,请参考以下文章

如何说服某人规范化数据库?

如何规范化熊猫数据框中的以下日期?

如何使用 normalizr 规范化来自 JSON 的数据?

如何在 javascript 中最有效地对规范化数据进行非规范化

如何使用熊猫规范化来自excel文件的嵌套字典数据

如何在 GCP 上执行数据非规范化?