经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 大数据/云/AI » 人工智能基础 » 查看文章
聚类——人工合成数据集
来源:cnblogs  作者:凯鲁嘎吉  时间:2018/12/6 10:23:14  对本文有异议

聚类——人工合成数据集

作者:凯鲁嘎吉 - 博客园 http://www.cnblogs.com/kailugaji/

1.Ring

  1. function [data,real_label]=generate_ring(large_R,small_R,width,datanum_one_cluster)
  2. %[data,real_label]=generate_ring(0.85,0.15,0.15,500)
  3. %前两列是数据,最后一列是标签(12
  4. %datanum_one_cluster: 每一类点的个数
  5. format long
  6. seita_1=rand(1,datanum_one_cluster)*2*pi;%角度
  7. r_1=rand(1,datanum_one_cluster)*width+large_R;%半径
  8. x_1=r_1.*cos(seita_1);
  9. y_1=r_1.*sin(seita_1);
  10. A=[x_1; y_1; ones(1,datanum_one_cluster)];
  11. plot(x_1,y_1,'b*');
  12. hold on;
  13. fid=fopen('ring.txt','w');
  14. fprintf(fid,'%.2f %.2f %d\n',A);  
  15. seita_2=rand(1,datanum_one_cluster)*2*pi;%角度
  16. r_2=rand(1,datanum_one_cluster)*width+small_R;%半径
  17. x_2=r_2.*cos(seita_2);
  18. y_2=r_2.*sin(seita_2);
  19. B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
  20. plot(x_2,y_2,'b+');
  21. xlabel('X');
  22. ylabel('Y');
  23. title('ring');
  24. fprintf(fid,'%.2f %.2f %d\n',B);  
  25. fclose(fid);
  26. data_load=dlmread('ring.txt');
  27. data=data_load(:,1:2);
  28. real_label=data_load(:,3);

图像为:

2. FuzzyX

  1. function  [data,real_label]=generate_FuzzyX(X_Range, Y_Range, width, datanum_one_cluster)
  2. %datanum_one_cluster:每类数据个数
  3. % [data,real_label]=generate_FuzzyX([-3,3], [-2.5,2.5], 0.2, 500)
  4. fid=fopen('FuzzyX.txt','w');
  5. x_1=rand(1,datanum_one_cluster)*(X_Range(2)-X_Range(1))+X_Range(1);
  6. x_2=rand(1,datanum_one_cluster)*(X_Range(2)-X_Range(1))+X_Range(1);
  7. seita1=atan((Y_Range(2)-Y_Range(1))/(X_Range(2)-X_Range(1)));%角度
  8. y_1=x_1*tan(seita1);
  9. bias=randn(1,datanum_one_cluster)*width-width/2;
  10. bias_x=bias*cos(pi/2-seita1);
  11. bias_y=bias*sin(pi/2-seita1);
  12. x_1=x_1-bias_x;
  13. y_1=y_1+bias_y;
  14. plot(x_1,y_1,'b*');
  15. hold on;
  16. A=[x_1; y_1; ones(1,datanum_one_cluster)];
  17. fprintf(fid,'%.2f %.2f %d\n',A);  
  18. seita2=-seita1;%角度
  19. y_2=x_2*tan(seita2);
  20. bias=randn(1,datanum_one_cluster)*width-width/2;
  21. bias_x=bias*cos(pi/2-seita2);
  22. bias_y=bias*sin(pi/2-seita2);
  23. x_2=x_2-bias_x;
  24. y_2=y_2+bias_y;
  25. plot(x_2,y_2,'b+');
  26. hold on;
  27. xlabel('X');
  28. ylabel('Y');
  29. title('FuzzyX');
  30. B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
  31. fprintf(fid,'%.2f %.2f %d\n',B);  
  32. fclose(fid);
  33. data_load=dlmread('FuzzyX.txt');
  34. data=data_load(:,1:2);
  35. real_label=data_load(:,3);

图像为:

3. Parabolic

  1. function [data,real_label]=generate_Parabolic(X1_Range, X2_Range, width, datanum_one_cluster)
  2. %datanum_one_cluster:每类数据个数
  3. % [data,real_label]=generate_Parabolic([-2,1], [-1,2], 0.15, 500)
  4. x_1=rand(1,datanum_one_cluster)*(X1_Range(2)-X1_Range(1))+X1_Range(1);
  5. x_2=rand(1,datanum_one_cluster)*(X2_Range(2)-X2_Range(1))+X2_Range(1);
  6. fid=fopen('Parabolic.txt','w');
  7. y_1=(x_1+0.55).^2-1.5;
  8. bias_x=randn(1,datanum_one_cluster)*width-width/2;
  9. bias_y=randn(1,datanum_one_cluster)*width-width/2;
  10. x_1=x_1+bias_x;
  11. y_1=y_1+bias_y;
  12. plot(x_1,y_1,'b+');
  13. hold on;
  14. A=[x_1; y_1; ones(1,datanum_one_cluster)];
  15. fprintf(fid,'%.2f %.2f %d\n',A);  
  16. y_2=-(x_2-0.55).^2+1.5;
  17. bias_x=randn(1,datanum_one_cluster)*width-width/2;
  18. bias_y=randn(1,datanum_one_cluster)*width-width/2;
  19. x_2=x_2-bias_x;
  20. y_2=y_2+bias_y;
  21. plot(x_2,y_2,'b*');
  22. hold on;
  23. xlabel('X');
  24. ylabel('Y');
  25. title('Parabolic');
  26. B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
  27. fprintf(fid,'%.2f %.2f %d\n',B);  
  28. fclose(fid);
  29. data_load=dlmread('Parabolic.txt');
  30. data=data_load(:,1:2);
  31. real_label=data_load(:,3);

图像为:

4. Zigzag

  1. function [data,real_label]=generate_Zigzag(width, datanum_one_cluster)
  2. %datanum_one_cluster:每类数据个数
  3. % [data,real_label]=generate_Zigzag(0.1, 501)
  4. fid=fopen('Zigzag.txt','w');
  5. seita1=atan(2/1.5);
  6. seita2=atan(-2/1.5);
  7. seita3=seita1;
  8. x_1=rand(1,datanum_one_cluster/3)*1.5-2;
  9. x_2=rand(1,datanum_one_cluster/3)*1.5-0.5;
  10. x_3=rand(1,datanum_one_cluster/3)*1.5+1;
  11. y_1=x_1*tan(seita1)+1.7;
  12. y_2=x_2*tan(seita2)+0.4;
  13. y_3=x_3*tan(seita3)-2.3;
  14.  
  15. bias=randn(1,datanum_one_cluster)*width-width/2;
  16. bias_x_1=bias(1:datanum_one_cluster/3)*cos(pi/2-seita1);
  17. bias_y_1=bias(1:datanum_one_cluster/3)*sin(pi/2-seita1);
  18. bias_x_2=bias(datanum_one_cluster/3+1:2*datanum_one_cluster/3)*cos(pi/2-seita2);
  19. bias_y_2=bias(datanum_one_cluster/3+1:2*datanum_one_cluster/3)*sin(pi/2-seita2);
  20. bias_x_3=bias(2*datanum_one_cluster/3+1:3*datanum_one_cluster/3)*cos(pi/2-seita3);
  21. bias_y_3=bias(2*datanum_one_cluster/3+1:3*datanum_one_cluster/3)*sin(pi/2-seita3);
  22.  
  23. x_1=x_1-bias_x_1;
  24. y_1=y_1+bias_y_1;
  25. x_2=x_2-bias_x_2;
  26. y_2=y_2+bias_y_2;
  27. x_3=x_3-bias_x_3;
  28. y_3=y_3+bias_y_3;
  29. x=[x_1';x_2';x_3'];
  30. y=[y_1';y_2';y_3'];
  31. plot(x,y,'b*');
  32. hold on;
  33. A=[x'; y'; ones(1,datanum_one_cluster)];
  34. fprintf(fid,'%.2f %.2f %d\n',A);  
  35. mu1=[-0.5,-0.75];
  36. sigma1=[0.01 0; 0 0.01];
  37. z1=mvnrnd(mu1,sigma1,ceil(datanum_one_cluster/2));
  38. mu2=[1,0.75];
  39. sigma2=[0.01 0; 0 0.01];
  40. z2=mvnrnd(mu2,sigma2,datanum_one_cluster-ceil(datanum_one_cluster/2));
  41. z=[z1;z2];
  42. plot(z(:,1),z(:,2),'b+');
  43. hold on;
  44. xlabel('X');
  45. ylabel('Y');
  46. title('Zigzag');
  47. B=[(z(:,1))'; (z(:,2))'; 2*ones(1,datanum_one_cluster)];
  48. fprintf(fid,'%.2f %.2f %d\n',B);  
  49. fclose(fid);
  50. data_load=dlmread('Zigzag.txt');
  51. data=data_load(:,1:2);
  52. real_label=data_load(:,3);

图像为:

5. 数据

    生成的数据已保存在当前文件夹下面的四个TXT文档中。可以用matlab打开。

 

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号