模式识别 - 特征归一化 及 測试 代码(Matlab)

特征归一化 及 測试 代码(Matlab)


本文地址: http://write.blog.csdn.net/postedit/26221235


通过提取视频特征的程序, 从视频数据集中提取特征数据, 使用matlab进行计算每一列的最大值, 并进行列的归一化;

最后存储入txt的文本, 进行兴许处理.


代码:

%特征处理函数
%By C.L.Wang
%本程序是处理特征数据, 包含数据的归一化, 存储最大值向量, 和归一化的矩阵;
%并进行測试效果
%数据格式为第1列是标签, 2-end列是特征, 而且正样本在前, 负样本在后;
%% 提取特征数据
clc,clear;

train_file = load('features.txt');
label_data = train_file(:,1);
feature_data = train_file(:,2:end);
%% 最大值
max_data = max(abs(feature_data));
max_data(max_data==0) = 1;

max_data_feature = [[0,0,0],max_data]; %为了与曾经的标准统一
dlmwrite('violence_max_matlab.txt', max_data_feature, ' ');

morn_data = feature_data*diag(1./max_data); %归一化
%% 归一化特征
norm_data_feature = [label_data, morn_data];
dlmwrite('violence_norm_matlab.txt', norm_data_feature, ' ');
%% 验证 [归一化]
label_vector = label_data;
instance_matrix = norm_data_feature(:,2:end);

libsvm_options = '-t 2 -c 10 -g 1 -v 10';
svmtrain(label_vector, instance_matrix, libsvm_options);

输出:

Cross Validation Accuracy = 73.9027%




转载于:https://www.cnblogs.com/jzdwajue/p/6752786.html

雷达工作模式识别技术研究的具体方法有很多,这里提供一种基于神经网络的方法的matlab实现。 1. 数据预处理 首先需要准备好训练数据和测试数据,这些数据需要进行预处理,包括数据去噪、归一化等操作。这里我们以MSTAR数据集为例,使用matlab自带的load函数加载数据,并进行预处理: ```matlab % 加载数据 load('mstar_data.mat'); % 数据去噪 data = wdenoise(data, 'sqtwolog', 'h', 'mln', 4, 'db4'); % 数据归一化 data = normalize(data, 'range', [-1, 1]); ``` 2. 特征提取 接下来需要对数据进行特征提取,以便于神经网络进行分类。这里我们使用小波变换进行特征提取,具体实现代码如下: ```matlab % 小波变换 [c, l] = wavedec2(data(:, :, 1), 4, 'db4'); coeffs = zeros(length(c), size(data, 3)); for k = 1:size(data, 3) [c, l] = wavedec2(data(:, :, k), 4, 'db4'); coeffs(:, k) = c; end % 特征归一化 coeffs = normalize(coeffs, 'range', [-1, 1]); ``` 3. 构建神经网络 接下来需要构建一个神经网络进行分类,这里我们使用matlab自带的feedforwardnet函数构建一个全连接神经网络,代码如下: ```matlab % 构建神经网络 net = feedforwardnet([64, 32], 'trainbr'); net.trainParam.epochs = 500; net.trainParam.max_fail = 20; net.trainParam.goal = 0.01; net.trainParam.showWindow = false; % 训练神经网络 [net, tr] = train(net, coeffs, labels); % 测试神经网络 test_coeffs = zeros(length(c), size(test_data, 3)); for k = 1:size(test_data, 3) [c, l] = wavedec2(test_data(:, :, k), 4, 'db4'); test_coeffs(:, k) = c; end test_coeffs = normalize(test_coeffs, 'range', [-1, 1]); test_labels = net(test_coeffs); ``` 4. 分类结果评估 最后需要对分类结果进行评估,这里我们使用混淆矩阵和分类准确率进行评估,代码如下: ```matlab % 混淆矩阵 confusion_matrix = zeros(num_classes, num_classes); for i = 1:size(test_labels, 2) [~, class_idx] = max(test_labels(:, i)); confusion_matrix(test_labels(i), test_labels(i)) = confusion_matrix(test_labels(i), test_labels(i)) + 1; end % 分类准确率 accuracy = trace(confusion_matrix) / sum(confusion_matrix(:)); ``` 以上就是基于神经网络的雷达工作模式识别技术的matlab实现,具体实现细节还需要根据具体情况进行调整和优化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值