matlab中ind2vec函数,ELM报错错误使用 ind2vec和出错elmtrain T = ind2vec(T)

本帖最后由 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 上传

b4d287d1aacbf0cf95a77c41289acfe6.gif

c5006d1a5b4047f80d42a7082635a87b.gif

4ac6ee09bbde3857336fd33f2bc54990.png

修改前数据.png

(421.72 KB, 下载次数: 1)

2021-1-14 15:26 上传

b4d287d1aacbf0cf95a77c41289acfe6.gif

c5006d1a5b4047f80d42a7082635a87b.gif

2fbd293d9ce7666282d641bcfbdd565c.png

报错.png

(6.96 KB, 下载次数: 3)

2021-1-14 15:26 上传

b4d287d1aacbf0cf95a77c41289acfe6.gif

c5006d1a5b4047f80d42a7082635a87b.gif

241ec92a32ecf2f98c1631959d777b3c.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值