文章标题

3 篇文章 0 订阅
2 篇文章 0 订阅

matlab中根据分类条件产生带标签的数据(一)

一、实验原理

二、实验步骤
1,编辑函数generate_signedDataEllipse

%% 本函数的功能是根据所给分类方程,产生一组带标签的数据点(二维)
%  row表示需要的数据点个数;
%  range_x、range_y分别是数据[横纵坐标取值范围],都是 1*2 矩阵.
%  分类方程形式:y = a*x^m + b
function data = generate_signedDataForEllipse(row,range_x,range_y,a,m,b)
data=zeros(row,3);
min_x=range_x(1);
max_x=range_x(2);
min_y=range_y(1);
max_y=range_y(2);
for i=1:1:row
    %rand('seed',0); %初始化高斯随机生成器为0,这对结果的可重复性很重要
    x = min_x+(max_x-min_x)*rand(1,1);
    y = min_y+(max_y-min_y)*rand(1,1);
    sign = zeros(1,1);
    if y>(a*x^m + b) 
        sign = 1;
    else
        sign = -1;
    end
    data(i,:)=[x,y,sign];
end

figure;
%在图片中显示所有数据点
for i=1:1:row
    x1 = data(i,1);
    x2 = data(i,2);
    sign = data(i,3);
    if sign == 1  
        plot(x1,x2,'r+','markersize',6); 
    elseif sign == -1  
        plot(x1,x2,'bo','markersize',6); 
    end 
    hold on;
end;
hold off;
grid on;

2,调用函数,取分类线为:x^2+y^2=16
X2=generate_signedDataForEllipse(100,[-8,8],[-8,8],1,1,16,2,2)
Matlab 中输出:
X2 =

0.0605   -0.1665   -1.0000
6.0328   -2.3497    1.0000

-0.8089 7.4165 1.0000
-7.3232 7.5673 1.0000
-4.9727 2.6739 1.0000
1.3830 2.8018 -1.0000
-2.2236 1.9245 -1.0000
4.9784 -7.6919 1.0000
-6.6580 7.5968 1.0000
2.4216 -4.3002 1.0000
-1.5441 -6.0477 1.0000
-3.7050 -3.8745 1.0000
-2.6934 -5.5643 1.0000
-2.4319 -6.0535 1.0000
6.1464 -6.4915 1.0000
6.8807 -1.6157 1.0000
-7.2416 -2.5220 1.0000
3.7755 4.7149 1.0000
0.7185 2.9796 -1.0000
6.2981 -7.1233 1.0000
-3.1414 -7.2609 1.0000
-4.8724 3.5227 1.0000
3.5481 6.0448 1.0000
1.3189 -6.8691 1.0000
6.7639 4.8060 1.0000
-3.4249 0.6986 -1.0000
7.7564 3.4508 1.0000
5.4235 -1.0678 1.0000
-0.4700 0.9714 -1.0000
-3.6945 3.9843 1.0000
0.0622 2.3490 -1.0000
-3.0761 -5.7804 1.0000
-0.3908 -2.2007 -1.0000
4.6098 4.4847 1.0000
2.6962 -5.8639 1.0000
-7.6551 0.9575 1.0000
-3.1869 7.0306 1.0000
7.6945 -3.4141 1.0000
4.8131 6.3378 1.0000
1.5604 6.1443 1.0000
7.0997 0.7865 1.0000
3.6542 1.2281 -1.0000
-7.5863 -0.8555 1.0000
2.3408 0.3392 -1.0000
-2.0430 6.9942 1.0000
5.2725 5.5854 1.0000
-2.0395 1.4910 -1.0000
5.9608 6.9360 1.0000
2.6954 -4.6916 1.0000
2.4616 -6.8472 1.0000
-1.4924 2.6709 -1.0000
6.9396 4.9752 1.0000
-0.2472 4.1080 1.0000
-1.3272 7.5486 1.0000
7.8076 5.8264 1.0000
-1.7779 -0.7241 -1.0000
-4.0530 4.5508 1.0000
6.1254 6.6194 1.0000
0.9326 1.5819 -1.0000
-5.6180 6.3954 1.0000
-0.7937 -4.7092 1.0000
6.3944 4.2014 1.0000
6.1198 -3.4408 1.0000
2.7716 2.6285 -1.0000
-6.0350 -1.4829 1.0000
-3.5954 3.4667 1.0000
-3.4658 6.3392 1.0000
5.2253 -1.7596 1.0000
-0.0336 3.1169 -1.0000
5.3499 1.7541 1.0000
1.1958 -2.7833 -1.0000
-0.6972 3.4207 -1.0000
6.1505 3.5337 1.0000
-7.7022 2.7964 1.0000
-0.9839 -0.9949 -1.0000
-6.1274 5.0349 1.0000
-2.8023 -4.0604 1.0000
-2.5166 -1.9889 -1.0000
0.7449 0.9907 -1.0000
-1.6668 -1.6299 -1.0000
0.2459 2.5205 -1.0000
7.2146 3.5576 1.0000
-1.5987 5.3099 1.0000
-5.8506 -7.0325 1.0000
-6.6520 -5.3776 1.0000
-2.8125 -3.1724 1.0000
-7.8131 0.6385 1.0000
-6.4740 -5.6558 1.0000
2.0983 5.7491 1.0000
7.5875 1.1334 1.0000
7.9496 0.8567 1.0000
0.2473 -2.7091 -1.0000
-1.1200 -0.1311 -1.0000
-6.8634 6.2038 1.0000
-6.9659 -1.0210 1.0000
5.2261 -1.6874 1.0000
1.8156 5.0983 1.0000
6.1798 6.8978 1.0000
-4.9474 -3.8627 1.0000
6.3659 1.4938 1.0000
并且绘制出了数据点的图像:
这里写图片描述

3,当分类线为 -2x+y=2,即 y=2x+2.时:
X3=generate_signedDataForEllipse(100,[-8,8],[-8,8],-2,1,2,1,1)
输出结果:
X3 =

0.0614    1.8050   -1.0000
5.1108    0.5102   -1.0000

-4.7668 -0.7377 1.0000
-1.1534 7.4568 1.0000
1.9209 3.1262 -1.0000
3.5226 -2.4497 -1.0000
0.2718 0.9071 -1.0000
-5.4961 0.9929 1.0000
3.1169 -1.1767 -1.0000
5.3803 3.7022 -1.0000
-2.2395 -0.7326 1.0000
-1.8178 4.4089 1.0000
3.7483 -1.1156 -1.0000
3.1000 7.1234 -1.0000
4.5477 3.2891 -1.0000
-6.2507 -1.7611 1.0000
1.4545 -0.6499 -1.0000
-7.1946 -4.3410 1.0000
5.3470 -7.7497 -1.0000
5.8194 -6.7509 -1.0000
2.7047 0.0034 -1.0000
-4.5121 1.1459 1.0000
-6.0450 2.7387 1.0000
1.5934 -7.1044 -1.0000
-7.0985 -5.5600 1.0000
-7.6861 -1.0372 1.0000
5.3155 1.8782 -1.0000
0.3221 5.8219 1.0000
-6.4368 6.5288 1.0000
-6.2717 0.2719 1.0000
-5.7095 0.9499 1.0000
-7.9267 4.2669 1.0000
5.5793 6.6691 -1.0000
7.7915 0.0821 -1.0000
-3.6573 -6.3880 -1.0000
0.1256 1.3697 -1.0000
4.2062 -6.6726 -1.0000
2.5855 0.2717 -1.0000
-5.2632 7.0169 1.0000
1.4477 -0.9498 -1.0000
7.0707 2.4946 -1.0000
-0.7689 5.4352 1.0000
0.5220 0.8622 -1.0000
2.8810 -2.1250 -1.0000
-4.1714 1.2628 1.0000
5.8702 -1.4916 -1.0000
-6.1982 -0.8985 1.0000
-3.1970 -1.5778 1.0000
5.3338 -1.5419 -1.0000
-1.7572 -2.2328 -1.0000
-5.7559 -3.8379 1.0000
-6.6110 -1.1296 1.0000
-3.8835 -3.2391 1.0000
-1.2023 -6.0927 -1.0000
-0.0789 3.3025 1.0000
-4.1028 4.5611 1.0000
-6.8146 -1.6979 1.0000
-7.9457 -4.4692 1.0000
-7.9792 -4.9731 1.0000
-5.7203 -3.7108 1.0000
-5.2017 -5.7816 1.0000
1.5822 6.4169 1.0000
7.0301 -4.4610 -1.0000
-0.2773 -1.9838 -1.0000
0.3805 -3.7620 -1.0000
-6.9063 -1.0188 1.0000
-5.2184 -7.5823 1.0000
7.2749 -1.1105 -1.0000
7.3849 4.1986 -1.0000
-7.8824 2.8806 1.0000
3.2952 2.3221 -1.0000
0.8370 -4.5103 -1.0000
4.3579 -4.3515 -1.0000
-2.0662 6.2549 1.0000
5.7020 -1.5611 -1.0000
-2.9117 1.7382 1.0000
6.5631 6.5456 -1.0000
1.4655 -2.6789 -1.0000
5.6490 -0.9216 -1.0000
6.4697 -7.4691 -1.0000
0.5188 3.4640 1.0000
-5.1312 -2.6155 1.0000
-4.9966 -2.8492 1.0000
-1.5383 0.7771 1.0000
-7.2202 0.8437 1.0000
-3.6030 -4.1360 1.0000
-4.1097 -5.5334 1.0000
7.3027 6.9706 -1.0000
5.0994 3.6522 -1.0000
-5.1870 -2.2341 1.0000
-4.9794 -7.9808 -1.0000
-2.9373 3.1939 1.0000
2.0041 0.6890 -1.0000
-0.9754 -3.4012 -1.0000
0.0265 4.1847 1.0000
4.1985 1.2169 -1.0000
3.9626 2.3286 -1.0000
-6.0285 0.0704 1.0000
-2.4438 -6.5256 -1.0000
-5.6344 -4.8293 1.0000
显示图片:
这里写图片描述
四、总结与思考:

1,测试表明,本程序在产生针对椭圆分类条件的数据时,产生的标签均正确;但是对于线性分类条件,产生的数据标签有时不正确。
这是由于判断标签时的条件语句为:(a*x^m + b*y^n) > c,它是不是拿纵坐标y的值进行对比,故会产生错误的标签。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值