matlab验证植物电信号分类(更新)

一、SVM,rbf内核,交叉验证

function [ classfication ] = SVM2_2( train,test )
%使用植物电信号数据进行二分类实验(45*30),其中,每一行代表一个样本,
%共有45行,每一个样本包含30个特征,即30列。且1-18,19-450行的数据为同一类,分别为dk(抗盐),LD(盐敏感)

data=xlsread('C:\Users\ihor\Desktop\30个特征参数.xlsx');         % 下载数据
meas=data(:,1:30);                      %选取出数据前45行,前30列:特征
species=data(:,31);                    %选取出数据前45行,最后1列:类别
X=meas;
Y=nominal(ismember(species,1));
P=cvpartition(Y,'holdout',0.2);     %交叉验证,测试集为20%

%使用训练数据,进行SVM模型训练
svmModel = svmtrain(X(P.training,:),Y(P.training),'kernel_function','rbf','showplot',false);
%使用测试数据,测试分类效果
C = svmclassify(svmModel,X(P.test,:),'showplot',false);
%分类错误率
errRate = sum(Y(P.test)~= C)/P.TestSize

end

错误率30%~44%

下一步考虑特征降维。

t-SNE降维:

维数错误率
20.89
30.44
40/0.11/0.22/0.44/0.33
50.44
60.33
70.22/0.11/0.56/0.33
80.44
90.33
100.44
110.33
120.33
130.44
140.44
150.44
160.44
170.44
  
200.33
210.33
290.33
300.44

二、BP神经网络

训练集:测试集=7:3

%读取训练数据
trainData = xlsread('C:\Users\ihor\Desktop\trainData.xlsx'); 
f=trainData(:,1:30);                %选取出数据30行,前30列:特征
class=trainData(:,31);            %选取出数据30行,最后1列:类别

%特征值归一化
[input,minI,maxI] = premnmx( f')  ;

%构造输出矩阵
s = length( class ) ;
output = zeros( s , 2  ) ;
for i = 1 : s 
   output( i , class( i )  ) = 1 ;
end

%创建神经网络
net = newff( minmax(input) , [10 2] , { 'logsig' 'purelin' } , 'traingdx' ) ; 

%设置训练参数
net.trainparam.show = 50 ;
net.trainparam.epochs = 500 ;
net.trainparam.goal = 0.01 ;
net.trainParam.lr = 0.01 ;

%开始训练
net = train( net, input , output' ) ;

%读取测试数据
testData =  xlsread('C:\Users\ihor\Desktop\testData.xlsx'); 
t=testData(:,1:30);                %选取出数据15行,前30列:特征
c=testData(:,31);                  %选取出数据15行,最后1列:类别

%测试数据归一化
testInput = tramnmx ( t' , minI, maxI ) ;

%仿真
Y = sim( net , testInput ) 

%统计识别正确率
[s1 , s2] = size( Y ) ;
hitNum = 0 ;
for i = 1 : s2
    [m , Index] = max( Y( : ,  i ) ) ;
    if( Index  == c(i)   ) 
        hitNum = hitNum + 1 ; 
    end
end
sprintf('识别率是 %3.3f%%',100 * hitNum / s2 )

神经元个数激活函数训练函数训练次数show最大训练次数epochs性能目标goal学习速率lr识别率
10logisig、purelintraingdx505000.010.0153.33%~60%
        

三、朴素贝叶斯

%2018.4.16
%读取训练、测试集
Data_train = xlsread('C:\Users\ihor\Desktop\trainData.xlsx'); 
Data_prediction = xlsread('C:\Users\ihor\Desktop\testData.xlsx'); 

%训练集特征、类别
training_data = Data_train(:,1:30);
training_label = Data_train(:,31);

%测试集特征、类别
prediction_data = Data_prediction(:,1:30);
prediction_label = Data_prediction(:,31);

%朴素贝叶斯分类
nb=NaiveBayes.fit(training_data,training_label);
predict_label1=predict(nb,prediction_data);

%准确率
training_accuracy=length(find(predict_label1==prediction_label))/length(prediction_label)

不降维分类的准确率有53.33%




  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值