combining text and numeric matrices
Ältere Kommentare anzeigen
My dataset has 6 predictors (all ordinal text values e.g. good, better, best) and 1 response (ordinal numeric value e.g. 1,2,3) column. When I’m trying to combine these into 7 columns for further classification study, I’m shown the following error ’ Error using horzcat Dimensions of matrices being concatenated are not consistent. ’ Any suggestion?
10 Kommentare
Walter Roberson
am 7 Feb. 2018
When you talk about ordinal do you mean you are using categorical variables?
Hasnain Ali
am 8 Feb. 2018
Bearbeitet: Hasnain Ali
am 8 Feb. 2018
Walter Roberson
am 8 Feb. 2018
Bearbeitet: Walter Roberson
am 8 Feb. 2018
But it appears you would have to convert the inputs to numeric, but not the response variable
Hasnain Ali
am 8 Feb. 2018
Bearbeitet: Hasnain Ali
am 8 Feb. 2018
Walter Roberson
am 8 Feb. 2018
If you use the mnrfit() routine then you would not convert XY to cell, and you would pass in the outcomes as the second parameter rather than building a single XYO matrix.
Hasnain Ali
am 8 Feb. 2018
Walter Roberson
am 8 Feb. 2018
The R2017b documentation says that the Y may be categorical.
Hasnain Ali
am 9 Feb. 2018
Walter Roberson
am 9 Feb. 2018
Re-read your documentation. For R2015b: https://www.mathworks.com/help/releases/R2015b/stats/mnrfit.html#inputarg_Y
Response values, specified as a column vector or a matrix. Y can be one of the following:
- An n-by-k matrix, where Y(i,j) is the number of outcomes of the multinomial category j for the predictor combinations given by X(i,:). In this case, the number of observations are made at each predictor combination.
- An n-by-1 column vector of scalar integers from 1 to k indicating the value of the response for each observation. In this case, all sample sizes are 1.
- An n-by-1 categorical array indicating the nominal or ordinal value of the response for each observation. In this case, all sample sizes are 1.
Antworten (1)
Kai Domhardt
am 7 Feb. 2018
I am going to assume, that your predictors matrix is of type 'm x 6 Cell'.
temp = randi(3,10,6);
predictors = cell(10,6);
predictors(temp==1) = {'good'};
predictors(temp==2) = {'better'};
predictors(temp==3) = {'best'};
response = randi(3,10,1);
This results in:
predictors =
{'good' } {'good' } ...
{'better'} {'best' } ...
... ...
and
response =
1
2
...
When you want to combine them you, need to convert your numerical array 'response' into an cell array to match the type of 'predictors':
combined = [predictors, num2cell(response)];
1 Kommentar
Hasnain Ali
am 8 Feb. 2018
Kategorien
Mehr zu Text Analytics Toolbox finden Sie in Hilfe-Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!
