主成分分析(PCA)解释在更改数据框位置后,方差保持不变

问题描述 投票:0回答:1

我有一个数据框,其中A和B用于预测C.

df = df[['A','B','C']]
array = df.values

X = array[:,0:-1]
Y = array[:,-1]

# Feature Importance
model = GradientBoostingClassifier()
model.fit(X, Y)
print ("Importance:")
print((model.feature_importances_)*100)


#PCA
pca = PCA(n_components=len(df.columns)-1)
fit = pca.fit(X)

print("Explained Variance")
print(fit.explained_variance_ratio_)

这打印

Importance:
[ 53.37975706  46.62024294]
Explained Variance
[ 0.98358394  0.01641606]

但是,当我更改数据帧位置交换A和B时,只更改了重要性,但解释方差仍然存在,为什么解释的方差不会根据[0.01641606 0.98358394]而改变?

df = df[['B','A','C']]


Importance:
[ 46.40771024  53.59228976]
Explained Variance
[ 0.98358394  0.01641606]
scikit-learn pca
1个回答
1
投票

解释的方差不是指A或B或数据框的任何列。它指的是由PCA识别的主要成分,它们是列的一些线性组合。这些组件按照减少方差的顺序排序,因为documentation说:

components_:array,shape(n_components,n_features)要素空间中的主轴,表示数据中最大方差的方向。组件按explain_variance_排序。

explain_variance_:array,shape(n_components,)每个所选组件解释的方差量。等于X的协方差矩阵的n_components最大特征值。

explain_variance_ratio_:array,shape(n_components,)每个所选组件解释的方差百分比。

因此,功能的顺序不会影响返回的组件的顺序。它确实会影响数组components_,它是一个矩阵,可用于将主成分映射到特征空间。

© www.soinside.com 2019 - 2024. All rights reserved.