#python #psychopy #economics #minmax
#python #psychopy #экономика #minmax
Вопрос:
Я работаю с психометрическими данными и на данный момент использую следующую функцию масштабирования:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
score= scaler.fit_transform(df['raw_score'])*10
Я намерен использовать это в опросе, чтобы возвращать оценки людям из 10, и я пытаюсь избежать экстремального значения 0 или 10 для выбросов / людей, имеющих минимальный или максимальный балл.
Например, вместо оценки 10 я бы предпочел, чтобы оценка была 9,8, поскольку просмотр оценки как 10 может быть неудобным с визуальной точки зрения. Я понимаю, что это влечет за собой включение уровня ошибки в подсчете очков, но я не думаю, что это было бы проблемой, поскольку возвращаемые оценки не слишком далеки от оригинала.
Я попытался с помощью следующего кода увеличить max / уменьшить min на 1%, чтобы скорректировать оценки:
def rescale(score, minimum, maximum):
if type(score) == pd.Series:
score = score[0]
else:
score = score
if score >= maximum:
maximum = 1.1* score
if score <= minimum:
minimum = 0.9* score
return ((score - minimum)/(maximum - minimum)) * 10
Мне было интересно, существует ли стандартный метод исключения экстремумов в Python?
Комментарии:
1. Как насчет простого умножения результата на
0.96
, а затем добавления0.2
? Это преобразует0
в0.2
,10
в9.8
, но сохраняет среднюю точку5.0
at5.0
. И вы можете легко отменить процесс для любого значения.
Ответ №1:
то, что вы ищете, называется CLAMP; рассмотрим clip()
метод из numpy
import numpy as np
np.clip([0,2.35,6.4,8.0,8.9,9.999,10.0,10,10.1], 0.2, 9.8)