本帖最后由 zkc19991002 于 2021-1-14 15:26 编辑
这是我的代码:
clear all
b=xlsread('排列熵.xlsx');
a = randperm(size(b,1));
c = b(a,:);
Train = c(1:45,:);
Test = c(46:end,:);
P_train = Train(:,3:end)';
T_train = Train(:,2)';
P_test = Test(:,3:end)';
T_test = Test(:,2)';
[IW,B,LW,TF,TYPE] = elmtrain(P_train,T_train,15,'sig',1);
T_sim_1 = elmpredict(P_train,IW,B,LW,TF,TYPE);
T_sim_2 = elmpredict(P_test,IW,B,LW,TF,TYPE);
result_1 = [T_train' T_sim_1'];
result_2 = [T_test' T_sim_2'];
k1 = length(find(T_train == T_sim_1));
n1 = length(T_train);
Accuracy_1 = k1 / n1 * 100;
disp(['训练集正确率Accuracy = ' num2str(Accuracy_1) '%(' num2str(k1) '/' num2str(n1) ')'])
k2 = length(find(T_test == T_sim_2));
n2 = length(T_test);
Accuracy_2 = k2 / n2 * 100;
disp(['测试集正确率Accuracy = ' num2str(Accuracy_2) '%(' num2str(k2) '/' num2str(n2) ')'])
排列熵1.xlsx是excel文件,不支持上传,发了图片。。。这是我的报错信息:
错误使用 ind2vec (line 50)
The data contains zero or negative values.
出错 elmtrain (line 47)
T = ind2vec(T);
我只是将数据的第一列也就是分类列从1,2,3改成了00,01,10
修改的代码是
初始:
P_train = Train(:,2:end)';
T_train = Train(:,1)';
P_test = Test(:,2:end)';
T_test = Test(:,1)';
修改后就是上文的代码:
P_train = Train(:,3:end)';
T_train = Train(:,2)';
P_test = Test(:,3:end)';
T_test = Test(:,2)';
不知道这是犯了啥低级问题:Q,谢谢大佬
修改后数据.png
(50.38 KB, 下载次数: 3)
2021-1-14 15:26 上传
修改前数据.png
(421.72 KB, 下载次数: 1)
2021-1-14 15:26 上传
报错.png
(6.96 KB, 下载次数: 3)
2021-1-14 15:26 上传