Linear Regression模型报错TypeError:float()参数类型错误求助
问题原因分析
这个报错TypeError: float() argument must be a string or a number, not 'method'说明你传入模型的X或Y中包含了方法对象,而非数值数据——即便你确认列的 dtype 是float64,也可能存在以下情况:
- 变量赋值失误:定义X或Y时,不小心将DataFrame的方法(比如
mean、sum)直接赋值给变量,却没加括号执行。例如误写为Y = Audit_Data['AUDIT_FEES'].mean(缺少()),此时Y不是数值序列,而是一个方法对象。 - DataFrame列被意外覆盖:之前的代码中,可能误将某个方法引用赋值给了
ASSETS、REVENUES或AUDIT_FEES列,导致该列不再是数值数据,而是方法对象。 - 变量名冲突:如果之前定义过同名的
X或Y变量,且该变量是方法对象,会覆盖当前的DataFrame切片结果。
验证与排查步骤
先打印X和Y的类型与内容,确认是否为数值型序列/数据框:
print(type(X), X.head()) print(type(Y), Y.head())
如果输出中出现<method...>字样,说明存在方法对象混入。接着检查所有涉及X、Y赋值的代码:
- 确保方法调用没有遗漏括号(比如
mean()而非mean); - 确认没有将方法赋值给DataFrame的列;
- 重新执行X、Y的赋值语句,保证X是包含两列数值的DataFrame,Y是数值型Series。
内容的提问来源于stack exchange,提问作者Venu Babu
相关产品推荐
相关产品推荐

