how to specify the input and target data
Mostra commenti meno recenti
I have a dataset 2310x25 table. I dont know how to specify the input and target data. i'm using the below code for k fold cross validation.
data= dlmread('data\\inputs1.txt'); %inputs
groups=dlmread('data\\targets1.txt'); % target
Fold=10;
indices = crossvalind('Kfold',length(groups),Fold);
for i =1:Fold
testy = (indices == i);
trainy = (~testy);
TestInputData=data(testy,:)';
TrainInputData=data(trainy,:)';
TestOutputData=groups(testy,:)';
TrainOutputData=groups(trainy,:)';
8 Commenti
Walter Roberson
il 16 Giu 2022
dlmread() always returns a numeric array, never a table() object.
uma
il 16 Giu 2022
Walter Roberson
il 16 Giu 2022
that example shows
test = (indices == i);
train = ~test;
class = classify(meas(test,:),meas(train,:),species(train,:));
This assumes numeric arrays. The code would have to be modified if the input is a table like you posted. We would need to know which table variables stored the information of interest.
uma
il 19 Giu 2022
Walter Roberson
il 19 Giu 2022
Are you working with a table() object or with something read by xlsread? Are all of the columns numeric? Where is the information about the class stored?
uma
il 20 Giu 2022
Walter Roberson
il 20 Giu 2022
Are you aware that some of the entries are question mark?
uma
il 21 Giu 2022
Risposte (1)
filename = 'https://www.mathworks.com/matlabcentral/answers/uploaded_files/1038775/bankruptcy.csv';
opt = detectImportOptions(filename, 'TrimNonNumeric', true);
data = readmatrix(filename, opt);
data = rmmissing(data);
groups = data(:,end);
data = data(:,1:end-1);
whos groups
[sum(groups==0), sum(groups==1)]
cp = classperf(groups);
Fold=10;
indices = crossvalind('Kfold',length(groups),Fold);
failures = 0;
for i =1:Fold
test = (indices == i);
train = ~test;
try
class = classify(data(test,:), data(train,:), groups(train,:));
classperf(cp, lass, test);
catch ME
failures = failures + 1;
if failures <= 5
fprintf('failed on iteration %d\n', i);
else
break
end
end
end
cp
1 Commento
Walter Roberson
il 21 Giu 2022
The reason for the failure is that you only have 30 entries with class 1, and when you are doing random selection for K-fold purposes, you are ending up with situations where there are no entries for class 1 in the training data.
Categorie
Scopri di più su Tables in Centro assistenza e File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!