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

调用StandardScaler.fit_transform处理字符串数据时报错咨询

报错根因

StandardScaler的作用是对数值特征做Z-score标准化,计算逻辑要求输入必须是纯数值类型,本身不支持自动转换字符串格式的类别特征,直接传入包含'Spain'这类字符串值的数据集时,就会抛出无法将字符串转浮点数的错误。
你参考Udemy课程代码运行失败,是因为课程示例在调用StandardScaler前已经完成了类别特征的编码预处理,你遗漏了这一步。

修复方案
  • 先对字符串类型的类别特征做编码转换,再执行标准化操作:
    • 地区这类无高低顺序的多分类标称特征,使用独热编码(OneHotEncoder)处理,避免人为给类别引入不存在的大小优先级
    • 性别这类二分类特征,使用标签编码(LabelEncoder)或独热编码均可
  • 可以通过ColumnTransformer把类别编码、数值标准化的步骤合并到同一个预处理流里,避免数据泄露,参考代码如下:
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.compose import ColumnTransformer

# 替换为你数据集里实际的类别列名
categorical_columns = ['region', 'gender']
numeric_columns = [col for col in X_train.columns if col not in categorical_columns]

# 定义预处理逻辑:类别列做独热编码,数值列做标准化
data_preprocessor = ColumnTransformer(
    transformers=[
        ("category_encode", OneHotEncoder(sparse_output=False), categorical_columns),
        ("numeric_scaler", StandardScaler(), numeric_columns)
    ]
)

# 一次性完成编码+标准化处理
X_train = data_preprocessor.fit_transform(X_train)

注意:所有特征缩放类操作(标准化、归一化等)都必须在非数值特征完成编码转换之后执行,禁止直接向缩放器传入字符串类型数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 06:12:39