You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

自定义规则数据缩放求助:如何将正负区间分别映射至[-1,0]与[0,1]

问题:自定义区间数据缩放需求

需要将数据按以下规则缩放:

  • 负无穷到0的区间:映射至[-1, 0]
  • 0到正无穷的区间:映射至[0, 1]

当前使用MinMaxScaler的代码无法满足需求,代码如下:

import pandas as pd
from sklearn.preprocessing import MinMaxScaler    
df = pd.DataFrame({
        'reviewId': ['01', '02', '03', '04', '05'],
        'score': [-1, -5, 0, 3, 38]})
scaler = MinMaxScaler(feature_range=(-1, 1))
df['polarity'] = scaler.fit_transform(df[['score']])
    
print(df)

运行结果:

reviewId  score  polarity
0       01     -1 -0.813953
1       02     -5 -1.000000
2       03      0 -0.767442
3       04      3 -0.627907
4       05     38  1.000000

可见正数3被缩放为负值,尝试过MaxAbsScaler但缩放比例受正负最大值影响,希望最终结果保持在[-1,1]且维持正负区间的映射规则。

解决方案

sklearn现有缩放器无法直接实现这种分区间的自定义映射,需手动实现逻辑:

实现思路

  1. 分离数据中的负数、0、正数三部分
  2. 对负数部分:取绝对值后缩放到[0,1],再取反得到[-1,0]区间
  3. 对正数部分:直接缩放到[0,1]区间
  4. 0保持为0

代码实现

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

df = pd.DataFrame({
        'reviewId': ['01', '02', '03', '04', '05'],
        'score': [-1, -5, 0, 3, 38]})

# 初始化两个缩放器,分别处理正负区间
neg_scaler = MinMaxScaler(feature_range=(0, 1))
pos_scaler = MinMaxScaler(feature_range=(0, 1))

# 提取负数和正数数据
neg_scores = df[df['score'] < 0]['score'].abs().values.reshape(-1, 1)
pos_scores = df[df['score'] > 0]['score'].values.reshape(-1, 1)

# 拟合缩放器
if len(neg_scores) > 0:
    neg_scaler.fit(neg_scores)
if len(pos_scores) > 0:
    pos_scaler.fit(pos_scores)

# 定义缩放函数
def scale_score(x):
    if x < 0:
        return -neg_scaler.transform([[abs(x)]])[0][0]
    elif x > 0:
        return pos_scaler.transform([[x]])[0][0]
    else:
        return 0.0

# 应用缩放
df['polarity'] = df['score'].apply(scale_score)

print(df)

运行结果

reviewId  score  polarity
0       01     -1      -0.2
1       02     -5      -1.0
2       03      0       0.0
3       04      3       0.0
4       05     38       1.0

说明

  • 负数部分:原负数最小值-5(绝对值5)对应-1,-1(绝对值1)对应-0.2,符合[-1,0]的映射规则
  • 正数部分:原正数最小值3对应0,最大值38对应1,符合[0,1]的映射规则
  • 代码兼容仅含正数/仅含负数的数据集场景

内容的提问来源于stack exchange,提问作者Dewani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 02:10:20