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

求助:训练LogisticRegression模型时出现字符串转浮点数错误

解决无法将字符串转换为浮点数的模型训练错误

你遇到的错误是因为训练数据(train_X或train_Y)中存在带双引号的字符串格式数值(比如"840343879668908032"),而逻辑回归模型要求输入必须是数值型数据,无法直接将这类字符串转换为浮点数。

解决步骤

1. 定位问题数据列

先检查哪些列是字符串类型,确认带引号的数值所在位置:

# 查看特征集的数据类型
print(train_attr.dtypes)
# 查看标签列的数据类型
print(train_label.dtypes)

# 找出特征集中包含字符串的列
string_cols = train_attr.select_dtypes(include=['object']).columns
print("字符串类型列:", string_cols)

2. 清洗数据:去除引号并转换为数值型

针对带引号的字符串列,去除引号后转换为浮点数(或整数,如果是整数类型的话):

  • 单个列处理:
# 处理特征集中的目标列
train_attr['目标列名'] = train_attr['目标列名'].str.strip('"').astype(float)
# 如果是标签列存在问题
train_label = train_label.str.strip('"').astype(float)
  • 批量处理所有字符串列:
# 批量处理特征集的所有字符串列
for col in train_attr.select_dtypes(include=['object']).columns:
    # 去除首尾双引号后转浮点数
    train_attr[col] = train_attr[col].str.strip('"').astype(float)

# 处理标签列(如果是字符串类型)
if train_label.dtype == 'object':
    train_label = train_label.str.strip('"').astype(float)

3. 处理特殊情况(可选)

如果存在无法转换为数值的字符串(比如缺失值、非数字内容),可以用pd.to_numeric强制转换,无法转换的设为NaN后再处理缺失值:

train_attr['目标列名'] = pd.to_numeric(train_attr['目标列名'].str.strip('"'), errors='coerce')
# 填充缺失值(示例用均值填充)
train_attr['目标列名'] = train_attr['目标列名'].fillna(train_attr['目标列名'].mean())

4. 重新训练模型

数据清洗完成后,重新转换为numpy数组并训练:

train_X = train_attr.to_numpy()
train_Y = train_label.to_numpy()

logreg = LogisticRegression().fit(train_X, train_Y)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 12:40:40