首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将高斯过程模型拟合到PCA中。预测看上去很错误

将高斯过程模型拟合到PCA中。预测看上去很错误
EN

Stack Overflow用户
提问于 2021-06-11 04:58:19
回答 1查看 312关注 0票数 3

我目前正在尝试将高斯过程模型与我的数据相匹配,并让它预测未来的几天。我已经减少了我的10个功能,减少到只有2个组成部分通过PCA在雪橇。现在我有了PCA1和PCA2。这是通过对训练集进行PCA (40%)来实现的。

代码语言:javascript
运行
复制
pca = PCA(n_components=2)
pca.fit(train_data)
PCAs = pca.transform(train_data)
PCA1 = PCAs[:,0]
PCA2 = PCAs[:,1]

其中train_data是具有大约10个特性和50行的数据格式,并应用了StandardScaler()

代码语言:javascript
运行
复制
kernel = RBF()
model = gaussian_process.GaussianProcessRegressor(kernel=kernel, normalize_y=True, n_restarts_optimizer=10)
model.fit(x_days_train, PCA1)
y_pred, y_std = model.predict(x_days, return_std=True)
model.score(x_days_train, PCA1)

其中x_days为满50天,x_days_train为20天(0,1,2.)。我得了1分。然而,我的预测结果看起来很糟糕(如下所示)。就像在训练数据之后,它就会掉下来,然后停滞。

不完全确定出了什么问题,但有几个猜测:

  • 因为我的数据没有目标变量,所以我在dataframe中的所有特性上都使用了PCA,它们应该是x变量吗?然后我用它们作为y变量(通过预测)。也许这是个不正确的方法?
  • 在此之后,PCA甚至可以用作y_prediction吗?
  • 我是否应该将PCA应用于不仅训练数据,而且也应用于测试数据(应用fit_transform)?
  • 我似乎只使用PCA1,而不使用PCA2 (也不是两者的结合)。我应该两者都用吗?如果是这样的话,是怎么做的?

会很感激你的帮助,谢谢。

EN

Stack Overflow用户

发布于 2021-06-23 19:33:09

因为我的数据没有目标变量,所以我在dataframe中的所有特性上都使用了PCA,它们应该是x变量吗?然后我用它们作为y变量(通过预测)。也许这是个不正确的方法?

你是对的。PCA旨在将高维数据转换为小得多的维度。基本上,数据被压缩,但仍然包含与数据中的每个元素相关的相同信息。Sci学习变换函数不接受y变量.相反,使用fit_transform()函数,它接受两个变量,将正确的方法应用于x变量,并忽略y。

在此之后,PCA甚至可以用作y_prediction吗?

PCA仅对数据进行变换,高斯过程回归(GPR)进行预测。

我是否应该将PCA应用于不仅训练数据,而且也应用于测试数据(应用fit_transform)?

是。

我似乎只使用PCA1,而不使用PCA2 (也不是两者的结合)。我应该两者都用吗?如果是这样的话,是怎么做的?

使用fit_transform()方法后,如下所示:

代码语言:javascript
运行
复制
pca_x, pca_y = pca.fit_transform(train_data)

应用这样的数据:

代码语言:javascript
运行
复制
kernel = RBF()
model = gaussian_process.GaussianProcessRegressor(kernel=kernel, normalize_y=True, n_restarts_optimizer=10)
model.fit(pca_x, pca_y)

以下是PCA探地雷达的Sci-kit学习用户指南。

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67931477

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档