Python实现Simple Linear Regression时日期特征输入触发ValueError问题问询
问题产生原因
scikit-learn的LinearRegression模型仅支持数值类型的特征输入,你当前使用的Date列是字符串格式的日期数据,无法直接参与线性回归的数值计算,因此拟合模型时触发了类型转换错误。后续预测时输入的['2021-1-1']同样是字符串格式,也会触发同类错误。
解决方案
核心思路是把日期格式数据转换为可计算的数值特征,最常用的方式是将日期转换为距离训练集最早日期的天数,具体操作如下:
- 先把数据集的
Date列转换为pandas datetime类型,再衍生数值类型的天数特征 - 预测时,需要把待预测的日期也做相同规则的数值转换后再输入模型
修正后的完整代码示例:
import pandas as pd from sklearn.linear_model import LinearRegression # 处理日期特征 df['Date'] = pd.to_datetime(df['Date']) # 衍生距离最早日期的天数作为数值特征 df['days_since_start'] = (df['Date'] - df['Date'].min()).dt.days X = df[['days_since_start']] y = df['ACP Cleaning'] model = LinearRegression() model.fit(X, y) # 预测前先转换待预测日期为相同规则的数值 predict_date = pd.to_datetime('2021-1-1') X_predict = (predict_date - df['Date'].min()).days # 转换为模型要求的二维数组格式 X_predict = [[X_predict]] y_predict = model.predict(X_predict)
内容的提问来源于stack exchange,提问作者juge
相关产品推荐
相关产品推荐

