您好,欢迎来到尔游网。
搜索
您的当前位置:首页使用libsvm时遇到MATLAB has encountered an internal problem and needs to close

使用libsvm时遇到MATLAB has encountered an internal problem and needs to close

来源:尔游网

最近在MATLAB中使用libsvm跑别人的程序,该程序在大部分数据集上可以正常运行,但在有一个数据集上运行时MATLAB会报“MATLAB has encountered an internal problem and needs to close”的错误:

凭直觉猜应该是数据集有啥问题,但又很奇怪为什么数据集有问题会导致MATLAB本身出错。查了一下程序,感觉应该是调用的libsvm所致。于是仔细排查了一下,发现错误是因为某些训练集是空集所致。为了验证我的猜想,我写了个程序复现了一下这个错误:

%demo_libsvm_error
clear;clc;close all;
X = rand(10,3);
y = (rand(10,1)>0.5)*2-1;

%normal case
svmmodel = svmtrain(y, X, '-q');
y_predict = svmpredict(ones(10,1), X, svmmodel);

%error case
idx = (y==0);%nonexist case
X_s = X(idx,:);
y_s = y(idx);
svmmodel_s = svmtrain(y_s, X_s, '-q');
y_predict = svmpredict(ones(10,1), X, svmmodel_s);

本错误与libsvm版本无关,错误是在我一直用的libsvm上发现的(记不清是哪个版本了),我使用最新版的libsvm (Version 3.34, August 2024)进行了测试,也会出现一样的错误。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- axer.cn 版权所有 湘ICP备2023022495号-12

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务