我有一个称为size_array的连续变量列表。我一直在这样扩展它们[0, 1]
:
max_abs_scaler = preprocessing.MinMaxScaler()
scaled = max_abs_scaler.fit_transform(size_array)
有没有办法[-1, 1]
在中位数(或百分位数)为0的范围内缩放它们?我的数据右偏,因此中位数以上的值分散了很多,而中位数左侧的值没有分散。我试图用这种方法扩展它们:
def using_median():
if x >= median:
return (x - median)/(max - median)
else:
return (median - x)/(median - min)
但这没有用。还有其他方法sklearn.preprocessing
吗?
我建议使用PowerTransformer()。它可以用于偏斜的发行版。
看看这个例子:
from sklearn import preprocessing
import matplotlib.pyplot as plt
import numpy as np
pt = preprocessing.PowerTransformer()
X_lognormal = np.random.RandomState(616)\
.lognormal(size=(300, 2))
_,ax = plt.subplots(1,2,sharey=True)
ax[0].hist(X_lognormal)
ax[1].hist(pt.fit_transform(X_lognormal))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句