线性回归运行失败求助:ValueError报错排查与修复
线性回归代码错误修复方案
错误根源
你在创建目标变量seller_top_up时犯了语法错误:
seller_top_up = pd.DataFrame(['top_up_by_seller'])
这行代码生成的是一个仅包含字符串'top_up_by_seller'的DataFrame,而非从原数据集data中提取对应的数值列。线性回归模型要求标签(y)必须是数值型数据,因此抛出了ValueError: could not convert string to float: 'top_up_by_seller'的错误。
修正后的完整代码
import pandas as pd import matplotlib.pyplot as plt from sklearn import linear_model data = pd.read_csv(r"C:\Users\quynh.tranngoc\Desktop\B32_DownloadTable_20230508_100440.csv") print(data) data.shape data.plot(kind= 'scatter',x = 'total_order', y ='top_up_by_seller') plt.show() data.plot(kind='box') plt.show() data.corr() order = pd.DataFrame(data['total_order']) # 修正:从data中提取top_up_by_seller数值列 seller_top_up = pd.DataFrame(data['top_up_by_seller']) # 更简洁写法:直接用Series(sklearn支持Series作为y输入) # seller_top_up = data['top_up_by_seller'] print(order) lm = linear_model.LinearRegression() model = lm.fit(order, seller_top_up)
额外提示
- 若无需将标签转为DataFrame,直接使用
data['top_up_by_seller'](Series类型)作为fit()方法的第二个参数也可行,sklearn线性回归模型兼容该输入格式。 - 运行前请确认
data['top_up_by_seller']列均为数值型数据,若存在字符串或缺失值,需先完成数据清洗。
内容的提问来源于stack exchange,提问作者ngọc quỳnh trần
相关产品推荐
相关产品推荐

