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

StandardScaler.fit_transform缩放数据报ValueError如何解决

报错原因

运行标准化代码时触发如下报错:

ValueError: could not convert string to float: 'INLAND'

  • 核心原因是StandardScaler仅支持数值型输入,你读取的数据集里存在取值为INLAND这类字符串的分类特征列,未做编码转换直接传入标准化工具就会触发类型转换错误。
LabelEncoder修复方案

LabelEncoder的作用是将单列的字符串分类值映射为从0开始的连续整数,注意它仅支持一维数组输入,不能直接传入整个DataFrame,需要逐列处理,修正后的可运行代码如下:

import pandas as pd
from sklearn.preprocessing import StandardScaler, LabelEncoder

# 读取目标数据集
housing_feature_engineered = pd.read_csv("todaytest.csv")

# 筛选出所有存储字符串的对象类型列
category_columns = housing_feature_engineered.select_dtypes(include="object").columns

# 逐列执行标签编码
encoder = LabelEncoder()
for col in category_columns:
    housing_feature_engineered[col] = encoder.fit_transform(housing_feature_engineered[col])

# 分类特征编码完成后再执行标准化
scaler = StandardScaler()
housing_scaled = scaler.fit_transform(housing_feature_engineered)
housing_scaled
注意事项
  • 使用提示:如果你的分类特征取值没有天然顺序关系(比如INLAND这类区位标签、品类标签),LabelEncoder生成的整数会人为引入大小关系,可能误导后续模型学习到错误规律,这类场景更建议换用OneHotEncoder做独热编码。
  • 编码前建议先检查分类列是否存在缺失值,LabelEncoder无法直接处理空值,需要先对空值做填充或者删除对应行/列再执行编码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 21:24:20