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

时间:2017-12-16 14:10:14

标签: scikit-learn pca

我有一个数据框,其中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]

1 个答案:

答案 0 :(得分:1)

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

  

components_:array,shape(n_components,n_features)   特征空间中的主轴,表示数据中最大方差的方向。组件按explain_variance _。

排序      

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

     

explain_variance_ratio_:数组,形状(n_components,)   每个选定组件解释的差异百分比。

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