在Python中,有没有一种方法可以使用MinMax缩放来缩放变量,以避免0和1的极值?

在Python中,有没有一种方法可以使用MinMax缩放来缩放变量,以避免0和1的极值?,python,psychopy,economics,minmax,Python,Psychopy,Economics,Minmax,我正在处理心理测量数据,目前正在使用以下比例函数: from sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() score= scaler.fit_transform(df['raw_score'])*10 我打算在一项调查中使用这一点,将分数返回给10分中的人,并试图避免异常值/得分最低或最高的人的极端分数为0或10 例如,我宁愿分数为9.8,而不是10分,因为从视觉角度看,分数为10会让人不舒服。我理解这需

我正在处理心理测量数据,目前正在使用以下比例函数:

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
def重新缩放(分数、最小值、最大值):
如果类型(分数)=pd.系列:
分数=分数[0]
其他:
分数=分数
如果得分>=最大值:
最大值=1.1*分

如果得分,你要找的就是夹钳;从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)

把分数乘以
0.96
,然后加上
0.2
,怎么样?它将
0
转换为
0.2
10
转换为
9.8
,但将
5.0
的中点保持在
5.0
。您可以轻松地撤消任何值的过程。