Best tool for complex classification?
3 views (last 30 days)
Backstory: I'm trying to do some classification for condition monitoring. I have a total of 6 components, each one can be individually heated up - only one at a time. Together with a normal temperature situation, that gives me 7 possible cases, that I want to distinguish from my training data.
For every case, I have 12 "feautre-variables" - I can pick even more, but these 12 are supposed to be the most important values to keep track of. They are values from the current and voltage controls. They are complex numbers.
Now I want to use some MATLAB tool, to help me categorize the data, train some algorithm and be able to dectect in which case (1-7) some new data fits in best, e.g. to be able to say "This looks like normal temperature".
My first attempt was using the Classification learner. But he only takes in real values. I tried feeding it with only the real part, and then both the real and img. part, by creating a (84,510) matrix. (or 168x510 if taking both real and img part)
12*7 = 84 - all the features
I have 509 data points (measurments) for each feature.
I'm using the 510th column as a identifier columns, having values from 0-6, idnicating in which case the given set belongs to. Like this:
Now, the result is garbage. With the best classification, I get about 50% accuracy, which is useless.
The data iself seems to be able to give better accuracy - just by looking at it. Here I plotted a feature across the 7 cases (complex plot):
There are clear differences. Obiously not every feature out of the 12 gives such significant difference across all 7 cases, but some do. Even with the overlapping parts, there are enough other features to give clues on what case it is.
Any ideas which tool to use instead? Or any other changes, ideas?
Meg Noah on 1 Apr 2021
metricvalues = zeros(npts,nvar);
% find magnitude and phase of the complex values as metrics
% fillup the metricvalues array
% k-means cluster classifier
[classMap,classCentroids] = kmeans(metricvalues,nClass);