Как min_max нормализовать данные - PullRequest
0 голосов
/ 17 января 2020

В контексте классификации K-ближайших соседей мне нужно было мин-макс нормализовать несколько значений в словаре. Я сделал это, взяв значения, разделив их на отдельные списки, запустив в этих списках функцию нормализации min-max и снова сжал списки. См. ниже. Я думаю, есть более разумные способы сделать это?

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 Ответ

0 голосов
/ 17 января 2020

Почему бы не использовать MinMaxScaler от scikit-learn?

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 к своему тесту комплект.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...