#python #scikit-learn #data-science
#python #scikit-learn #наука о данных
Вопрос:
Я пытаюсь понять различное поведение MinMaxScaler от Sklearn для аналогичной серии.
У меня есть 2 набора серий, по 2 из которых в каждом, назовите это нормальным и новым. В каждом из наборов я хочу уменьшить их масштабы относительно друг друга для дальнейшей обработки. Итак, я использую объект MinMaxScaler одной серии для преобразования других серий, как в коде ниже.
normal_ser = pd.read_csv(f"data1.csv")["normal"]
print("Series set 1")
print('nNormal ser')
print(f'Normal max: {normal_ser.max()}, Normal min: {normal_ser.max()}')
plt.figure(figsize=(20, 3))
plt.plot(normal_ser)
plt.show()
print("Normal Ser histogram")
normal_ser.hist()
plt.show()
print('new ser')
new_ser = df2.read_csv("data2.csv")["new"]
print(f'New max: {new_ser.max()}, New min: {new_ser.max()}')
plt.figure(figsize=(20, 3))
plt.plot(new_ser)
plt.show()
print("New Ser histogram")
new_ser.hist()
plt.show()
print('Normal ser scaled')
# Scaling new series data based on the normal data series
mm_scaler = MinMaxScaler()
normal_ser_scaled = mm_scaler.fit_transform(normal_ser.values.reshape(-1, 1))
plt.figure(figsize=(20, 3))
plt.plot(normal_ser_scaled)
plt.show()
print('new ser scaled')
new_ser_scaled = mm_scaler.transform(new_ser.values.reshape(-1, 1))
plt.figure(figsize=(20, 3))
plt.plot(new_ser_scaled)
plt.show()
Итак, для set1 как обычной, так и новой серии я получаю вывод ниже.
Используя тот же код, у меня есть другой набор обычных и новых серий, и я получаю вывод, как показано ниже.
На приведенных выше рисунках мы можем видеть, что обычные и новые set1 и set2 имеют одинаковые диапазоны. Но масштабированные значения обеих новых серий имеют большую разницу. Один находится в диапазоне -16.0, а другой — в диапазоне -2.5. Почему это происходит? Я понимаю, что может быть какая-то разница, но она может быть не такой большой.
Есть ли другой способ добиться этого?
Комментарии:
1. Похоже на опечатку:
Normal min: {normal_ser.max()
2. Установка MinMaxScaler просто означает запоминание минимального и максимального значения ряда. Преобразование MinMaxScaler работает следующим образом: y = (x — min) /(max — min). Диапазоны этих серий даже не пересекаются, поэтому выходные данные получаются разными.
3. Но хребты находятся совсем рядом. Как вы думаете, может ли это иметь такое большое значение?
4. ДА. Просто попробуйте вычислить это вручную.