how to compare non numerical values or character strings element-wise between a table and a one dimensional array ?

2 vues (au cours des 30 derniers jours)
IrisD = readtable('irisdata.csv');
classes = categorical(IrisD{:,5});
Icats = categories(classes);
setosa = IrisD((IrisD(:,5)==Icats(1)),:);
Ttest1 = setosa(1:40,:);
Ttrain1 = setosa(41:50,:);
versicolor = IrisD((IrisD(:,5)==Icats(2)),:);
Ttest2 = versicolor(1:40,:);
Ttrain2 = versicolor(41:50,:);
virginica = IrisD((IrisD(:,5)==Icats(3)),:);
Ttest3 = virginica(1:40,:);
Ttrain3 = virginica(41:50,:);
Ttest = [Ttest1; Ttest2; Ttest3];
Ttrain = [Ttrain1; Ttrain2; Ttrain3];
I am getting this error: Undefined operator '==' for input arguments of type 'table'.
I am trying to split the Iris database into a training and testing dataset, with the first 40 values of each class being in the testing dataset and the remaining 10 for each class be in the training dataset.
  6 commentaires
Peter Perkins
Peter Perkins le 19 Mar 2019
Apurva, IrisD{:,5} certainly will work.
But I suggest that you use names, and dot indexing, and ==. So you code becomes
setosa = IrisD(IrisD.Species == Icats(1),:)
or maybe even
setosa = IrisD(IrisD.Species == 'setosa',:)
Isn't that nicer?

Connectez-vous pour commenter.

Réponse acceptée

madhan ravi
madhan ravi le 19 Mar 2019

Plus de réponses (0)

Catégories

En savoir plus sur Categorical Arrays dans Help Center et File Exchange

Tags

Produits

Community Treasure Hunt

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

Start Hunting!

Translated by