sklearn PCA 组件数量_
sklearn PCA number of components_
使用 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个成分吗?数据中不应该有和特征一样多的组件吗?
来自 scikit-learn 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) 在第二种情况下 min(10,20)=10
,输出形状是 (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)
功能与组件:
假设您有一个数据集,包含 3 个列名(年龄、性别、Risk_Factor)和 500 行。在这里,特征的数量是 3 而不是 500。instance/observation/component 的数量是 500。怎么可能每一行都是一个独特的特征,而不是在这里,年龄、性别或 Risk_Factor 是独特的特征。
希望一切都清楚。
使用 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个成分吗?数据中不应该有和特征一样多的组件吗?
来自 scikit-learn 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) 在第二种情况下 min(10,20)=10
,输出形状是 (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)
功能与组件:
假设您有一个数据集,包含 3 个列名(年龄、性别、Risk_Factor)和 500 行。在这里,特征的数量是 3 而不是 500。instance/observation/component 的数量是 500。怎么可能每一行都是一个独特的特征,而不是在这里,年龄、性别或 Risk_Factor 是独特的特征。 希望一切都清楚。