Maltab-机器学习-Engineering features

Statistical Functions

Measures of Central Tendency

Function Description
mean Arithmetic mean
median Median (middle) value
mode Most frequent value
trimmean Trimmed mean (mean, excluding outliers)
geomean Geometric mean
harmean Harmonic mean

Measures of Spread

Function Description
range Range of values (largest – smallest)
std Standard deviation
var Variance
mad Mean absolute deviation
iqr Interquartile range (75th percentile minus 25th percentile)

Measures of Shape

Function Description
skewness Skewness (third central moment)
kurtosis Kurtosis (fourth central moment)
moment Central moment of arbitrary order

Calculate Basic Statistics

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat

plot(b1.Time,b1.X)

hold on

plot(b2.Time,b2.X)

hold off

plot(b1.Time,b1.Y)

hold on

plot(b2.Time,b2.Y)

hold off

Task 1

aratiob = range(b1.Y)/range(b1.X)

Task 2

medxb = median(b1.X,"omitnan")

medyb = median(b1.Y,"omitnan")

Task 3

devxb = mad(b1.X)

devyb = mad(b1.Y)

Task 4

aratiov = range(v1.Y)/range(v1.X)

medxd = median(d1.X,"omitnan")

medyd = median(d1.Y,"omitnan")

devxm = mad(m1.X)

devym = mad(m1.Y)

Further Practice

plot(b1.X,b1.Y,b2.X,b2.Y)

axis([-1 1 -1 1])

axis equal

plot(d1.X,d1.Y,d2.X,d2.Y)

axis([-1 1 -1 1])

axis equal

Find Peaks in Signals

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat

plot(m1.Time,m1.X)

Task 1

idxmin = islocalmin(m1.X)

idxmax = islocalmax(m1.X)

Visualize the results

plot(m1.Time,m1.X)

hold on

plot(m1.Time(idxmin),m1.X(idxmin),"o")

plot(m1.Time(idxmax),m1.X(idxmax),"s")

hold off

Task 2

[idx,prom] = islocalmin(m1.X);

plot(m1.Time,prom)

Task 3

idxmin = islocalmin(m1.X,"MinProminence",0.1)

idxmax = islocalmax(m1.X,"MinProminence",0.1)

Further Practice

nnz(idxmin)

sum(idxmin)

Calculating Derivatives

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat

plot(m2.Time,m2.X)

grid

Task 1

dX = diff(m2.X);

dT = diff(m2.Time);

Task 2

dXdT = dX./dT;

Task 3

plot(m2.Time(1:end-1),dXdT)

Task 4

maxdx = max(dXdT)

dYdT = diff(m2.Y)./dT;

maxdy = max(dYdT)

Task 5

dYdT = standardizeMissing(dYdT,Inf);

maxdy = max(dYdT)

Further Practice

dYdT = standardizeMissing(dYdT,[-Inf 0 Inf]);

maxdy = max(dYdT)

Calculating Correlations

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads and plots the data.

load sampleletters.mat

plot(v2.X,v2.Y,"o-")

Task 1

C = corr(v2.X,v2.Y)

Task 2

C = corr(v2.X,v2.Y,"Rows","complete")

Task 3

M = [v2.X(1:11) v2.Y(1:11) v2.X(12:22) v2.Y(12:22)]

Task 4

Cmat = corr(M,"Rows","complete")

Create a Feature Extraction Function

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code loads the data and calculates some features for one letter.

load sampleletters.mat

letter = b1;

aratio = range(letter.Y)/range(letter.X)

idxmin = islocalmin(letter.X,"MinProminence",0.1);

numXmin = nnz(idxmin)

idxmax = islocalmax(letter.Y,"MinProminence",0.1);

numYmax = nnz(idxmax)

dT = diff(letter.Time);

dXdT = diff(letter.X)./dT;

dYdT = diff(letter.Y)./dT;

avgdX = mean(dXdT,"omitnan")

avgdY = mean(dYdT,"omitnan")

corrXY = corr(letter.X,letter.Y,"rows","complete")

featurenames = ["AspectRatio","NumMinX","NumMinY","AvgU","AvgV","CorrXY"];

Task 1

feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY)

Task 2

feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY,'VariableNames',featurenames)

Task 3 (continued below)

featB2 = extract(b2)

Task 3

function feat=extract(letter)

aratio = range(letter.Y)/range(letter.X)

idxmin = islocalmin(letter.X,"MinProminence",0.1);

numXmin = nnz(idxmin)

idxmax = islocalmax(letter.Y,"MinProminence",0.1);

numYmax = nnz(idxmax)

dT = diff(letter.Time);

dXdT = diff(letter.X)./dT;

dYdT = diff(letter.Y)./dT;

avgdX = mean(dXdT,"omitnan")

avgdY = mean(dYdT,"omitnan")

corrXY = corr(letter.X,letter.Y,"rows","complete")

featurenames = ["AspectRatio","NumMinX","NumMinY","AvgU","AvgV","CorrXY"];

feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY,'VariableNames',featurenames)

end

Add a Feature Extraction Function

Instructions are in the task pane to the left. Complete and submit each task one at a time.

This code creates a datastore and adds a preprocessing function as a transformation to it.

letterds = datastore("*.txt");

preprocds = transform(letterds,@scale)

Task 1

featds = transform(preprocds,@extract)

Task 2

data = readall(featds)

scatter(data.AspectRatio,data.CorrXY)

Task 3

knownchar = extractBetween(letterds.Files,"_","_")

Task 4

knownchar = categorical(knownchar)

Task 5

data.Character = knownchar

gscatter(data.AspectRatio,data.CorrXY,data.Character)

Local Functions

function data = scale(data)

% Normalize time [0 1]

data.Time = (data.Time - data.Time(1))/(data.Time(end) - data.Time(1));

% Fix aspect ratio

data.X = 1.5*data.X;

% Center X & Y at (0,0)

data.X = data.X - mean(data.X,"omitnan");

data.Y = data.Y - mean(data.Y,"omitnan");

% Scale to have bounding box area = 1

scl = 1/sqrt(range(data.X)*range(data.Y));

data.X = scl*data.X;

data.Y = scl*data.Y;

end

function feat = extract(letter)

% Aspect ratio

aratio = range(letter.Y)/range(letter.X);

% Local max/mins

idxmin = islocalmin(letter.X,"MinProminence",0.1);

numXmin = nnz(idxmin);

idxmax = islocalmax(letter.Y,"MinProminence",0.1);

numYmax = nnz(idxmax);

% Velocity

dT = diff(letter.Time);

dXdT = diff(letter.X)./dT;

dYdT = diff(letter.Y)./dT;

avgdX = mean(dXdT,"omitnan");

avgdY = mean(dYdT,"omitnan");

% Correlation

corrXY = corr(letter.X,letter.Y,"rows","complete");

% Put it all together into a table

featurenames = ["AspectRatio","NumMinX","NumMinY","AvgU","AvgV","CorrXY"];

feat = table(aratio,numXmin,numYmax,avgdX,avgdY,corrXY,'VariableNames',featurenames);

end

猜你喜欢

转载自blog.csdn.net/seek97/article/details/108401821
今日推荐