【发布时间】:2016-07-19 19:20:32
【问题描述】:
我正在寻找代表从数据集到其 PC 的映射的权重。目的是建立一个“校准”的固定空间,例如三种葡萄酒以及新的观察结果,例如引入了一种新的葡萄酒,它可以在先前校准的空间内进行分配,而无需更改固定的 PC 值。因此,可以通过执行应用于前三种类型的转换来适当地分配新的观察结果。
library(ggbiplot)
data(wine)
wine.pca <- prcomp(wine, center = TRUE, scale. = TRUE)
print(ggbiplot(wine.pca, obs.scale = 1, var.scale = 1, groups = wine.class, ellipse = TRUE, circle = TRUE))
编辑: wine 数据集被分成训练数据,以获得我所说的校准空间。
samp <- sample(nrow(wine), nrow(wine)*0.75)
wine.train <- wine[samp,]
然后使用训练数据对要验证的数据集进行子集化,例如
wine.valid <- wine[-samp,]
#PCA on training data
wine.train.pca <- prcomp(wine.train, center = TRUE, scale. = TRUE)
#use the transformation matrix from the training data to predict the validation data
pred <- predict(wine.train.pca, newdata = wine.valid)
随后,此thread 解决了如何表示由训练和转换的验证/测试数据产生的校准空间。
【问题讨论】:
-
您无法将 wine.pca 中的 PC 坐标与 pred 进行比较,因为它们的样本数量不同。另外,它没有意义,因为 wine.pca 已经包含 pred 中的坐标。您现在已经澄清您实际上想要预测葡萄酒类别,所以我认为我对 randomForest 的后续建议是一个不错的选择。
-
抱歉一直是 afc - 感谢@Marcinthebox 再次回复和解释!我在上面的示例中有一个错字,因为它是 ncol(wine) 而不是 nrow(wine)。此外,预测数据中应该没有给出类,所以我将它们更改为“未知”。
-
刚刚遇到了这个不错的答案,又是@Marcinthebox,澄清了一个类似的问题,可以在这里找到:stats.stackexchange.com/questions/72839/…
-
This 为在 ggbiplot 中绘制训练和验证数据集提供了后续答案。
标签: r classification random-forest pca