使用sklearn的PCA:
m = np.random.randn(10, 5)
mod = PCA()
mod.fit_transform(m)mod.components_将有5个组件,这对我来说很有意义,因为数据中有5个特性。
但是,如果m = np.random.randn(10, 20) mod.components_将包含10个组件
假设mod.components_中的行对应于特性的数量,那么第二个示例中不应该有20个组件吗?难道不应该有和数据中的特性一样多的组件吗?
发布于 2020-09-03 02:37:37
来自scikit-学习PCA
n_components : int, None or string
Number of components to keep. if n_components is not set all components are kept:
n_components == min(n_samples, n_features)因此,在第一种情况下,min(10,5)=5的输出形状是(5,5),而在第二种情况下,输出形状是(10,20)。
from sklearn.decomposition import *
import numpy as np
m = np.random.randn(10, 5)
mod = PCA()
mod.fit_transform(m)
print(mod.components_.shape) # (5, 5)
m = np.random.randn(10, 20)
mod = PCA()
mod.fit_transform(m)
print(mod.components_.shape) # (10, 20)特性Vs组件:
假设您有一个数据集,包含名为“年龄”、“性别”、“Risk_Factor”的3列和500行。在这里,功能的数量是3而不是500。实例/观察/构成部分的数目为500。如何能做到每一行都是一个独特的特点,而在这里,年龄,性别或Risk_Factor是独特的特征。希望一切都清楚。
https://stackoverflow.com/questions/63715876
复制相似问题