• 聚类——人工合成数据集


    聚类——人工合成数据集

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

    1.Ring

    function [data,real_label]=generate_ring(large_R,small_R,width,datanum_one_cluster)
    %[data,real_label]=generate_ring(0.85,0.15,0.15,500)
    %前两列是数据,最后一列是标签(1,2)
    %datanum_one_cluster: 每一类点的个数
    format long
    seita_1=rand(1,datanum_one_cluster)*2*pi;%角度
    r_1=rand(1,datanum_one_cluster)*width+large_R;%半径
    x_1=r_1.*cos(seita_1);
    y_1=r_1.*sin(seita_1);
    A=[x_1; y_1; ones(1,datanum_one_cluster)];
    plot(x_1,y_1,'b*');
    hold on;
    fid=fopen('ring.txt','w');
    fprintf(fid,'%.2f %.2f %d
    ',A);  
    seita_2=rand(1,datanum_one_cluster)*2*pi;%角度
    r_2=rand(1,datanum_one_cluster)*width+small_R;%半径
    x_2=r_2.*cos(seita_2);
    y_2=r_2.*sin(seita_2);
    B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
    plot(x_2,y_2,'b+');
    xlabel('X');
    ylabel('Y');
    title('ring');
    fprintf(fid,'%.2f %.2f %d
    ',B);  
    fclose(fid);
    data_load=dlmread('ring.txt');
    data=data_load(:,1:2);
    real_label=data_load(:,3);
    

    图像为:

    2. FuzzyX

    function  [data,real_label]=generate_FuzzyX(X_Range, Y_Range, width, datanum_one_cluster)
    %datanum_one_cluster:每类数据个数
    % [data,real_label]=generate_FuzzyX([-3,3], [-2.5,2.5], 0.2, 500)
    fid=fopen('FuzzyX.txt','w');
    x_1=rand(1,datanum_one_cluster)*(X_Range(2)-X_Range(1))+X_Range(1);
    x_2=rand(1,datanum_one_cluster)*(X_Range(2)-X_Range(1))+X_Range(1);
    seita1=atan((Y_Range(2)-Y_Range(1))/(X_Range(2)-X_Range(1)));%角度
    y_1=x_1*tan(seita1);
    bias=randn(1,datanum_one_cluster)*width-width/2;
    bias_x=bias*cos(pi/2-seita1);
    bias_y=bias*sin(pi/2-seita1);
    x_1=x_1-bias_x;
    y_1=y_1+bias_y;
    plot(x_1,y_1,'b*');
    hold on;
    A=[x_1; y_1; ones(1,datanum_one_cluster)];
    fprintf(fid,'%.2f %.2f %d
    ',A);  
    seita2=-seita1;%角度
    y_2=x_2*tan(seita2);
    bias=randn(1,datanum_one_cluster)*width-width/2;
    bias_x=bias*cos(pi/2-seita2);
    bias_y=bias*sin(pi/2-seita2);
    x_2=x_2-bias_x;
    y_2=y_2+bias_y;
    plot(x_2,y_2,'b+');
    hold on;
    xlabel('X');
    ylabel('Y');
    title('FuzzyX');
    B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
    fprintf(fid,'%.2f %.2f %d
    ',B);  
    fclose(fid);
    data_load=dlmread('FuzzyX.txt');
    data=data_load(:,1:2);
    real_label=data_load(:,3);
    

    图像为:

    3. Parabolic

    function [data,real_label]=generate_Parabolic(X1_Range, X2_Range, width, datanum_one_cluster)
    %datanum_one_cluster:每类数据个数
    % [data,real_label]=generate_Parabolic([-2,1], [-1,2], 0.15, 500)
    x_1=rand(1,datanum_one_cluster)*(X1_Range(2)-X1_Range(1))+X1_Range(1);
    x_2=rand(1,datanum_one_cluster)*(X2_Range(2)-X2_Range(1))+X2_Range(1);
    fid=fopen('Parabolic.txt','w');
    y_1=(x_1+0.55).^2-1.5;
    bias_x=randn(1,datanum_one_cluster)*width-width/2;
    bias_y=randn(1,datanum_one_cluster)*width-width/2;
    x_1=x_1+bias_x;
    y_1=y_1+bias_y;
    plot(x_1,y_1,'b+');
    hold on;
    A=[x_1; y_1; ones(1,datanum_one_cluster)];
    fprintf(fid,'%.2f %.2f %d
    ',A);  
    y_2=-(x_2-0.55).^2+1.5;
    bias_x=randn(1,datanum_one_cluster)*width-width/2;
    bias_y=randn(1,datanum_one_cluster)*width-width/2;
    x_2=x_2-bias_x;
    y_2=y_2+bias_y;
    plot(x_2,y_2,'b*');
    hold on;
    xlabel('X');
    ylabel('Y');
    title('Parabolic');
    B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
    fprintf(fid,'%.2f %.2f %d
    ',B);  
    fclose(fid);
    data_load=dlmread('Parabolic.txt');
    data=data_load(:,1:2);
    real_label=data_load(:,3);
    

    图像为:

    4. Zigzag

    function [data,real_label]=generate_Zigzag(width, datanum_one_cluster)
    %datanum_one_cluster:每类数据个数
    % [data,real_label]=generate_Zigzag(0.1, 501)
    fid=fopen('Zigzag.txt','w');
    seita1=atan(2/1.5);
    seita2=atan(-2/1.5);
    seita3=seita1;
    x_1=rand(1,datanum_one_cluster/3)*1.5-2;
    x_2=rand(1,datanum_one_cluster/3)*1.5-0.5;
    x_3=rand(1,datanum_one_cluster/3)*1.5+1;
    y_1=x_1*tan(seita1)+1.7;
    y_2=x_2*tan(seita2)+0.4;
    y_3=x_3*tan(seita3)-2.3;
    
    bias=randn(1,datanum_one_cluster)*width-width/2;
    bias_x_1=bias(1:datanum_one_cluster/3)*cos(pi/2-seita1);
    bias_y_1=bias(1:datanum_one_cluster/3)*sin(pi/2-seita1);
    bias_x_2=bias(datanum_one_cluster/3+1:2*datanum_one_cluster/3)*cos(pi/2-seita2);
    bias_y_2=bias(datanum_one_cluster/3+1:2*datanum_one_cluster/3)*sin(pi/2-seita2);
    bias_x_3=bias(2*datanum_one_cluster/3+1:3*datanum_one_cluster/3)*cos(pi/2-seita3);
    bias_y_3=bias(2*datanum_one_cluster/3+1:3*datanum_one_cluster/3)*sin(pi/2-seita3);
    
    x_1=x_1-bias_x_1;
    y_1=y_1+bias_y_1;
    x_2=x_2-bias_x_2;
    y_2=y_2+bias_y_2;
    x_3=x_3-bias_x_3;
    y_3=y_3+bias_y_3;
    x=[x_1';x_2';x_3'];
    y=[y_1';y_2';y_3'];
    plot(x,y,'b*');
    hold on;
    A=[x'; y'; ones(1,datanum_one_cluster)];
    fprintf(fid,'%.2f %.2f %d
    ',A);  
    mu1=[-0.5,-0.75];
    sigma1=[0.01 0; 0 0.01];
    z1=mvnrnd(mu1,sigma1,ceil(datanum_one_cluster/2));
    mu2=[1,0.75];
    sigma2=[0.01 0; 0 0.01];
    z2=mvnrnd(mu2,sigma2,datanum_one_cluster-ceil(datanum_one_cluster/2));
    z=[z1;z2];
    plot(z(:,1),z(:,2),'b+');
    hold on;
    xlabel('X');
    ylabel('Y');
    title('Zigzag');
    B=[(z(:,1))'; (z(:,2))'; 2*ones(1,datanum_one_cluster)];
    fprintf(fid,'%.2f %.2f %d
    ',B);  
    fclose(fid);
    data_load=dlmread('Zigzag.txt');
    data=data_load(:,1:2);
    real_label=data_load(:,3);
    

    图像为:

    5. 数据

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

  • 相关阅读:
    表单
    HTML5新特性
    Bash中的特殊字符
    网站商务通链接快速标识v1.0.js
    js实现中文简繁切换效果
    input 表单点击消失离开出现
    canonical 标签介绍
    商务通对话窗口出现验证码
    织梦dedecms后台发布文章不自动更新首页与栏目列表页
    dedecms修改templets为别的名字
  • 原文地址:https://www.cnblogs.com/kailugaji/p/10071280.html
Copyright © 2020-2023  润新知