我有一个数据框,其中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]
答案 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_
,它是一个矩阵,可用于将主要组件映射到要素空间。