运动想象丨特征分类 MATLAB例程(二)

运动想象丨特征分类 MATLAB例程(二)

像开源致敬!此篇介绍个人SVM分类和开源提供的分类器。

前篇:运动想象丨特征提取 MATLAB例程(一)

1 SVM 分类器

本文使用的上篇特征信息。
个人上传软件包:运动想象特征提取与分类MATLAB
使用libsvm软件包:MATLAB 安装 libsvm-3.23 教程

1.1 代码

%% 使用libsvm 运动想象分类
clc;
clear all;

run_FeatureExtract

disp('#######  Training The SVM Classsifier ##########')
load dataCSP.mat 
load labels_data_set_iii.mat

%% X为训练集, T测试集, Y训练标签

%% SVM网络训练
model = svmtrain(Y, X, '-c 2 -g 1');

%% SVM网络预测
[predict_label, accuracy,decision_values] = svmpredict(y_test, T, model);

1.2 分类结果

#######  Training The SVM Classsifier ##########
optimization finished, #iter = 70
nu = 1.000000
obj = -279.745629, rho = -0.000787
nSV = 140, nBSV = 140
Total nSV = 140
Accuracy = 69.2857% (97/140) (classification)

正确率稍微低一些,大家可自行选择分类器。

2 开源软件分类

第二阶段是使用Bagging,BoostingAdaBoost方法对提取的特征进行分类。
像开源致敬!M-MohammadPour/EEGClassification

2.1 代码

例如运行:AdaBoost/app1.m

close all; clear; clc;

load dataDWT.mat;
%load dataCSP.mat;
%load dataAR.mat;
%load dataPSD.mat;

Y(Y==2) = -1;

N=size(X,1);
trnX = X(1:N, :);
trnY = Y(1:N);

iter = 30;
abClassifier = initAdaBoost(iter);

N = size(trnX, 1); % Number of training samples
sampleWeight = repmat(1/N, N, 1);

for t = 1:iter
    weakClassifier = buildStump(trnX, trnY, sampleWeight);

    abClassifier.WeakClas{t} = weakClassifier;
    abClassifier.nWC = t;
    % Compute the weight of this classifier
    abClassifier.Weight(t) = 0.5*log((1-weakClassifier.error)/weakClassifier.error);
    weakClassifier.error
    % Update sample weight
    label = predStump(trnX, weakClassifier);
    tmpSampleWeight = -1*abClassifier.Weight(t)*(trnY.*label); % N x 1
    tmpSampleWeight = sampleWeight.*exp(tmpSampleWeight); % N x 1

    sampleWeight = tmpSampleWeight./sum(tmpSampleWeight); % Normalized

    % Predict on training data
    [ttt, abClassifier.trnErr(t)] = predAdaBoost(abClassifier, trnX, trnY);

    fprintf('\tIteration %d, Training error %f\n', t, abClassifier.trnErr(t));
end

trnError = abClassifier.trnErr;
plot(1:iter, trnError);

2.2 运行结果

这里写图片描述

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值