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

使用iris数据集训练线性回归模型出现字符串转float报错如何解决

问题原因

Iris数据集默认包含一列类别特征,取值为setosa、versicolor、virginica三类字符串。你构造特征矩阵X时仅剔除了目标列sepal length in cm,没有处理这列字符串类型的特征。sklearn的线性回归模型要求输入的所有特征均为数值类型,无法自动完成字符串到浮点数的转换,因此抛出该错误。

修复方案

有两种可行的处理方式,可根据需求选择:

方案1:直接剔除字符串类型的类别列

如果不需要将类别作为训练特征,直接在构造X时同时剔除目标列和类别列即可。首先执行print(iris_df.columns)确认你的csv文件中类别列的实际列名(通常为species),再修改特征提取代码:

# 同时剔除目标列和字符串类型的类别列
X= iris_df.drop(labels= ['sepal length in cm', 'species'], axis= 1)
y= iris_df['sepal length in cm']

方案2:对类别列做数值编码保留特征

如果需要使用类别特征参与训练,可对字符串列做独热编码转换为数值类型:

# 对类别列做独热编码,drop_first避免多重共线性
iris_df_encoded = pd.get_dummies(iris_df, columns=['species'], drop_first=True)
# 从编码后的数据中提取特征和标签
X= iris_df_encoded.drop(labels= 'sepal length in cm', axis= 1)
y= iris_df_encoded['sepal length in cm']

你可以在构造完X后执行print(X.dtypes)检查所有特征的类型,确认没有object类型的字段后再训练模型,可避免同类转换错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:54:06