问题描述
我正在使用心理数据,目前正在使用以下缩放功能:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
score= scaler.fit_transform(df['raw_score'])*10
我打算在调查中使用它来将分数返回给10分以内的人,并试图避免将离群值/具有最低或最高分数的人的极端得分设为0或10。
例如,我希望分数为9.8,而不是10,因为从视觉角度看分数为10可能会令人不舒服。我知道这需要在评分中加入一定程度的错误,但是我认为这不是返回分数与原始分数相差不大的问题。
我尝试使用以下代码将最高/最低降低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中的极端现象的标准方法?
解决方法
你要找的是CLAMP;考虑 numpy 的 clip()
方法
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)