如何在以下 PCA 的 Matlab 代码中动态查找数字组件?
how to find number components dynamically such given in following Matlab code of PCA?
下面link固定数量的主成分分析参数是预定义的,但应动态定义为Matlab代码。怎么可能?
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
如何动态查找主成分的数量,如 Matlab 代码中给出的那样:
[coeff,score,~,~,explained] = pca(train);
sm = 0;
no_components = 0;
for k = 1:size(explained,1)
sm = sm+explained(k);
if sm <= 99.4029
no_components= no_components+1;
end
end
no_components
这里的训练变量是一个二维矩阵。
我得到的 MatLab 和 python 的解释变量略有不同,因此解决如下:
[x,y] = train.shape
pca = PCA(n_components=(x-1))
varPca = pca.fit(train)
explainedVariance = pca.explained_variance_ratio_*100
sm = 0
no_components = 0
for k in range(0, x-1):
sm = sm+explainedVariance[k]
if sm <= 99.4029:
no_components= no_components+1
print(no_components)
下面link固定数量的主成分分析参数是预定义的,但应动态定义为Matlab代码。怎么可能?
https://scikit-learn.org/stable/modules/generated/sklearn.decomposition.PCA.html
如何动态查找主成分的数量,如 Matlab 代码中给出的那样:
[coeff,score,~,~,explained] = pca(train);
sm = 0;
no_components = 0;
for k = 1:size(explained,1)
sm = sm+explained(k);
if sm <= 99.4029
no_components= no_components+1;
end
end
no_components
这里的训练变量是一个二维矩阵。
我得到的 MatLab 和 python 的解释变量略有不同,因此解决如下:
[x,y] = train.shape
pca = PCA(n_components=(x-1))
varPca = pca.fit(train)
explainedVariance = pca.explained_variance_ratio_*100
sm = 0
no_components = 0
for k in range(0, x-1):
sm = sm+explainedVariance[k]
if sm <= 99.4029:
no_components= no_components+1
print(no_components)