1
czfy 2021-11-03 17:17:12 +08:00
这个是普通的线性回归,X 每个取值是独立的,还是类似时间序列 X 的值之间是相关的?
|
2
mmrindextt 2021-11-03 17:25:19 +08:00
进行模型调优
|
3
tqyq88 2021-11-03 17:51:03 +08:00
模型是基于什么数据集训练的?待预测的样本集是什么类型的数据?
如果是边界开放的数据集,什么模型也是没用的。 线性回归预测本来就只能解决边界封闭的数据的问题。 |
4
zhishiwanwan01 2021-11-03 18:59:30 +08:00
@tqyq88 请问什么是边界封闭的数据啊
|
5
albertni 2021-11-03 20:00:49 +08:00 via Android
时间序列模型的样本之间是相关的,改变样本集会影响单个样本的预测结果
|
6
jaredyam 2021-11-03 20:59:21 +08:00
所谓训练好的模型是说当前模型已经通过训练数据固定了超参数,你使用不同(多)的输入给模型,得到不同的输出,有什么问题么。即使股票市场规则写明了,不同人掌握的信息量不一样,做出的决策就有区别,不太清楚你想解决什么。
|
7
Xs0ul 2021-11-03 21:21:14 +08:00
挺怪的,不如直接说你用了什么模型,以及预测偏差有多大
|
8
ttys001 2021-11-04 01:15:12 +08:00
的确奇怪,正常的线性回归不会发生这种事儿~
建议说的更详细点。 LS 一堆连问题都没明白的就别说话了…… |
9
ipwx 2021-11-04 01:28:35 +08:00
Model 是什么模型。
---- 盲猜其实 Model 不是“线性回归”,是深度回归模型。并且可能用了 Batch Normalization 这种会让训练样本之间产生关联的东西,并且忘了关掉 training 模式 hhh |
10
uni 2021-11-04 08:56:17 +08:00
既然是线性回归模型,你可以把模型里面的参数全部打出来然后自己算一遍看看是怎么回事吧
|
11
txhwind 2021-11-04 10:09:10 +08:00
如果数值差异小于 1e-5 ,可能是数值计算实现的逻辑不同。
否则应该是用错了。 |
12
acone2003 OP 统一回复楼上诸位,可能我没有描述清楚:Features 是有几千个样本的测试样本集,每个样本大约有 200 个特征,各样本都是独立的,Model 确实是已经训练好的线性回归模型。我用 Predict1 = Model.predict( Features )这条语句先预测这几千个样本,然后截取头 100 个查看一下预测结果。然后用 Predict2 = Model.predict( Features[ 0:100, : ] )这条语句先截取头 100 个样本,再预测这 100 个样本。按道理说两次的结果应是一样的。但事实是,头几个样本的预测值几乎是一模一样的,但后来就有差别了,并且差别越来越大,到第 100 个样本时以是百分之几的差别。我不知道为什么会是这样。
|
13
ladychili 2021-11-04 11:38:26 +08:00
「 Model 确实是已经训练好的线性回归模型」说明不了问题。
把你 Model 从定义到 fit 的代码发出来看看。 |
14
albertni 2021-11-04 12:21:29 +08:00 via Android
@acone2003 你这个偏差变大的结果符合时间序列模型的表现,前项预测的残差代入后项,模型参数合适的话残差可能逐渐变大。最好的 debug 办法就是把模型写出来,手算几个看看结果怎么样,否则都是悬丝诊脉。
|
15
acone2003 OP 回 Albertni:谢谢你,我按照你的建议试一试。
回 ladychili:模型的定义和训练都是调用的 sklearn 中的标准函数,分别是: Model = sklearn.linear_model.LinearRegression( n_jobs=CpuNum )#创建 Model ,CpuNum 是 Cpu 的线程数 Model.fit( TrainFeatures, TrainYValues )#训练模型,两个参数分别是训练集的特征和真实值 Predict1 = Model.predict( Features )#此两句是利用训练好的模型进行预测 Predict2 = Model.predict( Features[ 0:100, : ] ) |
16
yuruizhe 2021-11-04 19:37:08 +08:00
Model.predict( Features[ 0:1, : ] )
Model.predict( Features[ 1:2, : ] ) Model.predict( Features[ 2:3, : ] ) Model.predict( Features[ 3:4, : ] ) Model.predict( Features[ 5:6, : ] ) Model.predict( Features[ 6:7, : ] ) Model.predict( Features[ 7:8, : ] ) Model.predict( Features[ 8:9, : ] ) 这九个结果与 Model.predict( Features[ 0:9, : ] ) 一样吗? |
17
tomcat65535 2021-11-09 10:55:06 +08:00
如果是线性回归,你不妨直接把训练好的 weights 取出来,自己乘一下你的 features
|
18
VIVVACI 2021-11-10 16:53:09 +08:00
我无法复现你的问题,建议把全部的代码和输出发上来
中间输出 print(f"train_x shape is : {train_x.shape}") |