24小时热门版块排行榜    

查看: 1571  |  回复: 1

chasing_ML

新虫 (初入文坛)

[求助] 如何画分类器的决策面?

敢问大神如何画分类器的决策面呢?如图示的粗线就是决策面了。。。网上有人说用等高线,但是我还是不太明白。。。
现在只是知道分类器的输出就是那些预测出来的类标,怎么去画那些属于某一类的点呢,搞了好久都搞不出来,请大神赐教啊
function  plotclassifiers( data,classifier )
X=data(:,1);
Y=data(:,2);
xmin=min(X); ymin=min(Y); rmin=min(xmin,ymin)-0.2;
xmax=max(X); ymax=max(Y); rmax=max(xmax,ymax)+0.2;
steps=(rmax-rmin)/1059;
xrange=rmin:steps:rmax;
yrange=rmin:steps:rmax;
x=xrange;
y=yrange;
[xx,yy]=meshgrid(x,y); % makes a grid of points
[row,col] = size(xx);
out=reshape(classifier*ones(size(classifier,2),row),row,col);
contourf(xx,yy,out,[0 0]);
end

我自己到处找资料写了上面一段程序,不知道对不对啊

如何画分类器的决策面?
无标题.png
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chasing_ML

新虫 (初入文坛)

我知道怎么画决策面了,有两种方法,一种是通过得出的分类器找到两类的数据,然后分别在x和y方向上求距离,当满足小于某个值同时大于某个值时的这个样本就会不断向决策面靠近直至找到这个样本,重复这个动作直到找到所有的临近点,然后连线就可以了;第二种方法是使用等高线contour函数,由于MATLAB的这个函数要求contour(x,y,z)中的x和y必须是严格单调的,所以只有从测试数据中获取最小最大值点,然后取很小的步长,这样做尽量保证了原有的数据都会落在这些区间内,接下来就把x和y组合起来作为测试数据集带入你的模型进行测试,这个时候得到的输出classificier就是z了,这样就可以画出等高线了。不过注意,用这个函数的时候得首先弄明白它的具体用法,然后就简单了。。。
2楼2015-10-29 10:52:38
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 chasing_ML 的主题更新
信息提示
请填处理意见