如何缩放数据但参考另一个选择的值

Posted

技术标签:

【中文标题】如何缩放数据但参考另一个选择的值【英文标题】:How to scale data but in reference of another chosen value 【发布时间】:2021-11-23 10:35:51 【问题描述】:

我有一个需要扩展的列表,例如:

[[45724.25] [45570.08] [45584.31] [45549.79]]

通过使用 sklearn from sklearn.preprocessing import MinMaxScalerMinMaxScaler,数据将转换为 0 到 1 的值,其中 1 是我要缩放的列表的最大值,其余的引用该最高值的值。

如何选择我想要引用的值。 PX。缩放引用 100000 的值,因此将缩放值,但最大值为 100000。

所以不是我的缩放值是这样的:

[[1.] [0.92] [0.94] [0.91]]

变成了这样:

[[0.47] [0.43] [0.45] [0.41]]

像素。缩放值并不精确,它们在这里是为了更清楚。

我认为(正如问题所写),我可以简单地添加我想要在原始列表中引用的最大值:

来自

[[45724.25]  [45570.08]  [45584.31]  [45549.79]]

[[45724.25]  [45570.08]  [45584.31]  [45549.79]  [100000.]]

使用缩放器,然后丢弃插入的值。

问题是它需要代表我对数据进行额外处理,有没有更简单的方法?

【问题讨论】:

虽然我同意 DB82XL 的回答。我想补充一点,您引用MinMaxScaler 的函数有两个属性,分别指示最小值和最大值。 0 和 1 只是它的默认值。 【参考方案1】:

正如@Kosmos 提到的,MinMaxScaler 有一个feature_range 参数,其默认值为(0,1)。您可以通过计算新的最大值来获得所需的结果:

# x is the raw data, c is the reference maximum to which the data should be references
x = np.array([[45724.25], [45570.08], [45584.31], [45549.79]])
c = 100000
print(f'Unscaled:\nx\n')

# Original approach: add max reference to dataset, scale, then drop
x2 = np.array([*x, [c]])
scaler = MinMaxScaler()
x_scaled = scaler.fit_transform(x2)
x_scaled = x_scaled[:-1]
print(f'Scaled (original approach):\nx_scaled\n')

# Proposed approach: calculate the desired max based on c and provide custom range
# np.ptp returns the range of the array (max - min)
desired_max = np.ptp(x) / (c - np.min(x))
scaler = MinMaxScaler(feature_range=(0, desired_max))
x_scaled = scaler.fit_transform(x)
print(f'Scaled (custom max):\nx_scaled\n')

输出:

Unscaled:
[[45724.25]
 [45570.08]
 [45584.31]
 [45549.79]]

Scaled (original approach):
[[0.00320403]
 [0.00037263]
 [0.00063397]
 [0.        ]]

Scaled (custom max):
[[0.00320403]
 [0.00037263]
 [0.00063397]
 [0.        ]]

【讨论】:

这不是我要问的,我想知道如何将所有数据引用为 100k 的最大值,正如您在答案的第二个比例中看到的那样。

以上是关于如何缩放数据但参考另一个选择的值的主要内容,如果未能解决你的问题,请参考以下文章

如何使用组合框根据另一个组合框的值从不同的表中选择数据

SQL INNER JOIN - 根据另一行的值从另一个表中选择数据

如何索引不在另一个表中的值

如何使用 jquery 裁剪缩放的图像

从另一个类缩放 MkMapView

r中的选择性缩放函数使用不同的数据框进行缩放