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

编写支持min_max/z_score归一化的Python函数报错如何解决?

问题排查与修正

1. 你当前遇到的SyntaxError报错直接原因

你定义zscore列的代码里,字符串结束引号用了中文全角的”,不是英文半角的",Python无法识别到字符串的闭合边界,因此抛出EOL扫描字符串字面量的语法错误,把df["zscore”]改成df["zscore"]即可解决该报错。

2. 代码中其他需要修正的错误

除了引号问题,你的代码还有多处逻辑、语法错误需要调整:

  • scaler.fit.transform是错误写法,MinMaxScaler的拟合转换方法是fit_transform,中间为下划线
  • z-score的计算逻辑完全错误:你当前的写法是对参数attr(应该是列的索引数字)求均值、标准差,再用这个值去找列,完全不符合逻辑。正确写法是先选中目标列,再对该列整体求均值和标准差
  • 两处dict(zip(...))的语句末尾都缺少闭合的右括号
  • 函数内部的代码没有做缩进,不符合Python语法要求
  • 不需要同时计算两种归一化结果,按需计算即可减少不必要的性能开销

3. 修正后的完整代码

import pandas as pd
from sklearn.preprocessing import MinMaxScaler

def normalization(fname, attr, normType):
    result = {}
    df = pd.read_csv(fname)
    # 获取目标列
    target_col = df.columns[attr]
    targ = df[target_col].tolist()
    
    if normType == "min_max":
        scaler = MinMaxScaler()
        norm_vals = scaler.fit_transform(df[[target_col]]).flatten().tolist()
        result = dict(zip(targ, norm_vals))
    elif normType == "z_score":
        col_mean = df[target_col].mean()
        col_std = df[target_col].std(ddof=1)
        norm_vals = ((df[target_col] - col_mean) / col_std).tolist()
        result = dict(zip(targ, norm_vals))
    else:
        raise ValueError("归一化类型仅支持'min_max'或'z_score'")
    
    return result

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 05:57:00