温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Java如何实现一类支持向量机

发布时间:2022-01-14 09:10:12 来源:亿速云 阅读:200 作者:iii 栏目:大数据

这篇文章主要介绍“Java如何实现一类支持向量机”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何实现一类支持向量机”文章能帮助大家解决问题。

通常一类问题出现在需要对训练样本进行一定比例的筛选,或者已知的训练样本都是正样本,而负样本却很少的情况。
这种情况下,往往需要训练一个对于训练样本紧凑的分类边界,就可以通过负样本实验。一个简单的实际例子是:一个工厂对于产品的合格性进行检查时,往往所知道是合格产品的参数,而不合格的产品的参数要么空间比较大,要么知道的很少。这种情况下就可以通过已知的合格产品参数来训练一个一类分类器,得到一个紧凑的分类边界,超出这个边界就认为是不合格产品。

%% 加载“鸢尾花”数据集

% 删除花瓣的长度和宽度

% 将所有的鸢尾花视为同一类

load fisheriris

X = meas(:,1:2);

y = ones(size(X,1),1);


%% 使用处理后的数据集训练SVM分类器

% 假设5%的观测值是异常值

rng(1);

SVMModel = fitcsvm(X,y,'KernelScale','auto','Standardize',true,...

    'OutlierFraction',0.05);

% SVMModel模型是一个训练好的分类器

% 默认情况下,软件使用高斯内核的一类学习 


%% 绘制观测和检测边界,标记支持向量和可能离群值

svInd = SVMModel.IsSupportVector;

h = 0.02; % 网格步长

[X1,X2] = meshgrid(min(X(:,1)):h:max(X(:,1)),...

    min(X(:,2)):h:max(X(:,2)));

[~,score] = predict(SVMModel,[X1(:),X2(:)]);

scoreGrid = reshape(score,size(X1,1),size(X2,2));


figure

plot(X(:,1),X(:,2),'k.')

hold on

plot(X(svInd,1),X(svInd,2),'ro','MarkerSize',10)

contour(X1,X2,scoreGrid)

colorbar;

title('{\bf Iris Outlier Detection via One-Class SVM}')

xlabel('Sepal Length (cm)')

ylabel('Sepal Width (cm)')

legend('Observation','Support Vector')

hold off

Java如何实现一类支持向量机  

% 图中离群值和其他数据以0为分界线


%% 交叉验证数据中负分数的观测值比例接近5%

CVSVMModel = crossval(SVMModel);

[~,scorePred] = kfoldPredict(CVSVMModel);

outlierRate = mean(scorePred<0);

disp(outlierRate)

关于“Java如何实现一类支持向量机”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注亿速云行业资讯频道,小编每天都会为大家更新不同的知识点。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI