使用Sklearn LinearRegression预测时间序列单值时遇类型错误求助
问题解决:Timestamp类型无法传入LinearRegression预测的错误
错误原因
LinearRegression模型只能处理数值型特征,直接传入Timestamp类型的时间索引时,模型尝试将其转换为浮点数失败,因此抛出TypeError。
修复方案
把时间索引转换为Unix时间戳(数值格式),训练和预测阶段统一使用这个数值型时间特征:
import pandas as pd import numpy as np import yfinance as yf from sklearn.linear_model import LinearRegression import datetime # 补充导入datetime模块,原代码遗漏该依赖 nq = yf.download("NQ=F", period="60d", interval="30m") nq.index = pd.to_datetime(nq.index) # 将时间索引转为秒级Unix时间戳,得到数值型特征数组 X = np.array(nq.index.timestamp()).reshape(-1, 1) y = np.array(nq['Close']) regr = LinearRegression() regr.fit(X, y) lasttime = nq.tail(1).index.item() newtime = lasttime + datetime.timedelta(minutes=30) # 把新时间同样转为秒级时间戳,匹配训练时的特征格式 newtime_ts = np.array([[newtime.timestamp()]]) # 执行预测 predicted_close = regr.predict(newtime_ts) print(predicted_close)
关键改动说明
- 用
.timestamp()方法将Timestamp直接转换为秒级Unix时间戳,确保特征X是纯数值数组 - 预测时,新生成的
newtime也要转换成相同格式的时间戳,保证和训练数据的特征类型一致 - 补充导入
datetime模块,避免原代码中datetime.timedelta调用报错
内容的提问来源于stack exchange,提问作者Scott Zimmerman
相关产品推荐
相关产品推荐

