How to use PCA (Principal component analysis) with SVM for classification in Mathlab?

12 ビュー (過去 30 日間)
Huda Diab
Huda Diab 2017 年 3 月 24 日
回答済み: Prasanna 2025 年 6 月 4 日
The input data that I have is a matrix X (99*8) , where the rows of X correspond to observations and the 8 columns to correspond (predictors or variables). I need to apply the PCA  on this matrix to choose a set of predictors (as a feature selection technique) .In Matlab, I know that I can use this function [coeff,score,latent]= pca(X) for applying the PCA on input matrix, but I don't know how to use the output of this function to create a new matrix that I need to use for training Support Vector Machine classifier. Please Help me! 
  1 件のコメント
SHWETA KHARA
SHWETA KHARA 2018 年 5 月 9 日
Hey!!! Did you get any solution for this problem? I encountered the same problem

サインインしてコメントする。

回答 (1 件)

Prasanna
Prasanna 2025 年 6 月 4 日
Hi Huda,
When you run “[coeff, score, latent] = pca(X)”, MATLAB performs PCA and returns:
  • coeff: the principal component coefficients (eigenvectors),
  • score: the projection of your data X into the new PCA space (i.e., transformed features),
  • latent: the eigenvalues (variance explained by each component).
The score matrix is what you use as the input to your classifier. It contains the transformed features (principal components), and typically you choose a subset of the first k columns of score that explain most of the variance. For example, if you want components that explain 95% of the variance:
[coeff, score, latent, ~, explained] = pca(X);
cumExplained = cumsum(explained);
k = find(cumExplained >= 95, 1); % Find the number of components to retain
X_reduced = score(:, 1:k); % Reduced feature set for SVM input
Now, X_reduced is your new feature matrix to be used for training the SVM. If you have a label vector Y, you can train the SVM as follows:
SVMModel = fitcsvm(X_reduced, Y);
Essentially, after applying PCA, you should use the score matrix as your transformed feature set. Select the number of principal components based on how much variance you want to retain and then use the resulting reduced matrix to train your SVM classifier. For more information, refer to the following documentations:
Hope this helps!

カテゴリ

Help Center および File ExchangeDimensionality Reduction and Feature Extraction についてさらに検索

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by