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

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

我们拥有十余年网页设计和网站建设经验,从网站策划到网站制作,我们的网页设计师为您提供的解决方案。为企业提供网站设计、做网站、微信开发、微信小程序开发成都手机网站制作成都h5网站建设、等业务。无论您有什么样的网站设计或者设计方案要求,我们都将富于创造性的提供专业设计服务并满足您的需求。

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

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

% 删除花瓣的长度和宽度

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

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如何实现一类支持向量机”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注创新互联行业资讯频道,小编每天都会为大家更新不同的知识点。


分享名称:Java如何实现一类支持向量机
文章链接:http://pwwzsj.com/article/iisjed.html