필터 지우기
필터 지우기

LDA with 2D vectors as predictors

조회 수: 3 (최근 30일)
Efstathios Pavlidis
Efstathios Pavlidis 2022년 5월 19일
답변: Moksh 2023년 9월 22일
Hi folks,
I have a (4X21) table. The 20 first columns are the predictors which contain 2d vectors eg [-1.014;-0.0194] the last column contains the class.. I use fitdiscr() but I get the error "Table variable trial1 is not a valid predictor". I suspect this happens because the predictors are vectors? Any solutions?? Thank you in advance
train_table=cell2table(tr_all,'VariableNames',{'trial1','trial2','trial3','trial4','trial5','trial6','trial7','trial8','trial9','trial10','trial11', 'trial12', 'trial13', 'trial14', 'trial15', 'trial16', 'trial17','trial18','trial19', 'trial20'});
train_table.trustee=[1;2;3;4];
Mdl_lda=fitcdiscr(train_table,'trustee');
Error using classreg.learning.internal.table2FitMatrix>makeXMatrix
Table variable trial1 is not a valid predictor.
Error in classreg.learning.internal.table2FitMatrix (line 123)
makeXMatrix(X,PredictorNames,CategoricalPredictors,OrdinalIsCategorical,ReferenceLevels);
Error in classreg.learning.classif.FullClassificationModel.prepareData (line 815)
[X,Y,vrange,wastable,varargin] = classreg.learning.internal.table2FitMatrix(X,Y,varargin{:});
Error in classreg.learning.FitTemplate/fit (line 246)
this.PrepareData(X,Y,this.BaseFitObjectArgs{:});
Error in ClassificationDiscriminant.fit (line 107)
this = fit(temp,X,Y);
Error in fitcdiscr (line 168)
this = ClassificationDiscriminant.fit(X,Y,RemainingArgs{:});
Error in Ws_classification_ind (line 143)
Mdl_lda=fitcdiscr(train_table,'trustee');

답변 (1개)

Moksh
Moksh 2023년 9월 22일
Hi Efstathios,
I understand that you are using the “fitcdiscr” function on a table in MATLAB and are facing the mentioned error.
You can try separating the predictor and class columns and convert them into arrays before passing them into the function.
I have created a table as per the mentioned specifications and showed how to do this in the following code:
% Recreating the table with the provided specifications
trial = rand(4, 20);
classes = cell(4, 1);
% Assigning class labels (Random)
classes{1} = 'c1';
classes{2} = 'c2';
classes{3} = 'c1';
classes{4} = 'c1';
% Table with the given specifications
table = array2table(trial);
table.class = classes;
% Converting the predictor variables to seperate array
columnsToConvert = 1:20;
predictorColumns = table(:, columnsToConvert);
predictors = table2array(predictorColumns);
% Class array
classesColumn = table2array(table(:, 21));
% Using the fitcdiscr function
fit = fitcdiscr(predictors, classesColumn);
Here, I am assuming that all the required data is already there, so I have just showed how to perform indexing on some randomly generated data.
For more information about the above used functions, please refer to the following documentation:
Hope this information helps!
Best Regards,
Moksh Aggarwal

카테고리

Help CenterFile Exchange에서 Discriminant Analysis에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by