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

如何将DataFrame中air_temp属性归一化至[-1,1]?解决报错问题

DataFrame单特征归一化的正确实现方案

错误原因解析

  1. Reshape错误:sklearn的预处理函数要求输入为二维数组,但elnino_1["air_temp"]返回的是一维Series,维度不匹配导致报错。
  2. int不可调用错误:你大概率把scale或preprocessing这类库函数名当成了变量名(比如曾赋值scale = 10),后续调用函数时实际调用的是整数变量,因此触发该错误。

正确实现代码

注意前提

确保没有用库函数名作为变量名(比如不要定义scale = 0、preprocessing = 5这类代码)。


方法1:Z-score标准化(使用scale函数)

from sklearn.preprocessing import scale

# 方式1:将Series转为二维数组(推荐)
air_temp_scaled = scale(elnino_1["air_temp"].values.reshape(-1, 1))
# 方式2:用双括号提取DataFrame(自动为二维)
air_temp_scaled = scale(elnino_1[["air_temp"]])

# 将标准化结果放回原DataFrame(需转成一维)
elnino_1["air_temp_scaled"] = air_temp_scaled.flatten()

方法2:Z-score标准化(使用StandardScaler,适合模型复用)

from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
# 直接传入二维DataFrame,结果转一维后放回原表
elnino_1["air_temp_scaled"] = scaler.fit_transform(elnino_1[["air_temp"]]).flatten()

方法3:Min-Max归一化(缩放到[0,1]区间)

from sklearn.preprocessing import MinMaxScaler

scaler = MinMaxScaler()
elnino_1["air_temp_minmax"] = scaler.fit_transform(elnino_1[["air_temp"]]).flatten()

额外注意事项

  • 若air_temp存在缺失值,需先处理(如填充均值/中位数),否则sklearn预处理函数会报错:
    elnino_1["air_temp"].fillna(elnino_1["air_temp"].mean(), inplace=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:10:47