在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
。您可以轻松地撤消任何值的过程。