You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Pandas列缩放归一化:将TOTAL列映射至5-50生成SIZE列

解决MinMaxScaler的Reshape报错问题

你碰到的这个报错,核心原因是**MinMaxScaler要求输入的数据必须是二维数组**(也就是形状为(样本数, 特征数)的格式),但df["TOTAL"]返回的是一维的Pandas Series(形状是(样本数,)),不符合要求,所以需要先调整数据的维度。

这里给你两种可行的修正方案:

方案1:用reshape(-1, 1)转换维度

直接把一维的Series转换成n行1列的二维数组,代码如下:

from sklearn.preprocessing import MinMaxScaler
import pandas as pd

# 先构造你的DataFrame
df = pd.DataFrame({
    "TOTAL": [3232, 382, 8291],
    "Name": ["Jane", "Jack", "Jones"]
})

scaler = MinMaxScaler(feature_range=(10, 50))
# 转换维度后再做缩放
df["SIZE"] = scaler.fit_transform(df["TOTAL"].values.reshape(-1, 1))

方案2:用双重方括号获取二维DataFrame

如果你不想手动reshape,可以用df[["TOTAL"]](注意是双重方括号),这样返回的是一个只有一列的DataFrame,本身就是二维结构,直接传入即可:

scaler = MinMaxScaler(feature_range=(10, 50))
df["SIZE"] = scaler.fit_transform(df[["TOTAL"]])

运行任意一种方案后,你都会得到和示例一致的结果:

TOTALNameSIZE
3232Jane24.413...
382Jack10.0
8291Jones50.0

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

火山引擎 最新活动