r - PCA:我可以反转 R 中第一个主成分的轴吗?
问题描述
这是一个可重现的示例:
set.seed(10)
pick <- sample(nrow(iris),nrow(iris)/2)
iris.training <- iris[pick,]
iris.testing <- iris[-pick,]
pca.training <- prcomp(iris.training[-5])
pca.testing <- prcomp(iris.testing[-5])
autoplot(pca.training,loadings.label=T,loadings=T)
autoplot(pca.testing,loadings.label=T,loadings=T)
可以看到,data.training 和 data.testing 上的 pca 产生了非常相似的双图,但第一个主成分反转了它的符号,它们是镜像的。是否可以强制两个组件旋转 180 度?
解决方案
您没有返回旋转的变量。修改后的代码如下。注意 retx=TRUE
set.seed(10)
pick <- sample(nrow(iris),nrow(iris)/2)
iris.training <- iris[pick,]
iris.testing <- iris[-pick,]
pca.training <- prcomp(iris.training[-5], retx=TRUE)
pca.testing <- prcomp(iris.testing[-5], retx=TRUE)
autoplot(pca.training,loadings.label=TRUE,loadings=TRUE)
autoplot(pca.testing,loadings.label=TRUE,loadings=TRUE)
推荐阅读
- c - 无法调用库中的函数
- java - 在 JasperReports 中处理 List 类型的字段
- java - 如何在 Java 中将 JSON 对象包装到单元素数组
- python - 无法连接到 MySQL 服务器(111 连接被拒绝)
- linux - 在 Apache Superset 中使用自定义“Viz”插件
- javascript - Firefox 在页面加载后捕获 keydown 事件
- php - 显示 0 个条目并搜索不工作的数据表
- python - Python取消引用URL但保留超链接
- sql - Postgres 按连续事件分组,间隔超过 10 分钟时中断
- c# - Xamarin 不会从表中删除数据