【发布时间】:2018-09-08 10:01:56
【问题描述】:
我正在使用以下代码对虹膜数据进行主成分分析:
from sklearn import datasets
iris = datasets.load_iris()
dat = pd.DataFrame(data=iris.data, columns=['sl', 'sw', 'pl', 'pw'])
from sklearn.preprocessing import scale
stddat = scale(dat)
from sklearn.decomposition import PCA
pca = PCA(n_components=2)
pc_out = pca.fit_transform(stddat)
pcdf = pd.DataFrame(data = pc_out , columns = ['PC-1', 'PC-2'])
print(pcdf.head())
输出:
PC-1 PC-2
0 -2.264542 0.505704
1 -2.086426 -0.655405
2 -2.367950 -0.318477
3 -2.304197 -0.575368
4 -2.388777 0.674767
现在我想确定 PC-1 的一组新值“sl”、“sw”、“pl”和“pw”,例如:4.8、3.1、1.3、0.2。我怎样才能做到这一点?我找不到使用 sklearn 库的任何方法。
编辑:如 cmets 中所述,我可以使用命令 pca.transform(new_data) 获取新数据的 PC 值。但是,我对获取变量 loadings 很感兴趣,这样我就可以在以后使用这些数字从任何地方确定 PC 值,而不仅仅是在当前环境中。
loadings 我的意思是“每个标准化原始变量应该乘以得到分量分数的权重”(来自https://en.wikipedia.org/wiki/Principal_component_analysis)。我在文档页面上找不到执行此操作的方法:http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
【问题讨论】:
-
pc_out = pca.transform(new_data)不能用于新数据吗? -
除了上述评论之外,您还可以使用基于类的缩放器来复制新数据的缩放(同样是
transform)。 -
我可以在这里从 pca 获取可变载荷值吗?我检查了此页面上的方法但找不到它:scikit-learn.org/stable/modules/generated/…
标签: python scikit-learn pca