聚类——人工合成数据集

作者:凯鲁嘎吉 - 博客园 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\\n\',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\');
 (\'ring\');
fprintf(fid,\'%.2f %.2f %d\\n\',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\\n\',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\');
 (\'FuzzyX\');
B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
fprintf(fid,\'%.2f %.2f %d\\n\',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\\n\',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\');
 (\'Parabolic\');
B=[x_2; y_2; 2*ones(1,datanum_one_cluster)];
fprintf(fid,\'%.2f %.2f %d\\n\',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\\n\',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\');
 (\'Zigzag\');
B=[(z(:,1))\'; (z(:,2))\'; 2*ones(1,datanum_one_cluster)];
fprintf(fid,\'%.2f %.2f %d\\n\',B);  
fclose(fid);
data_load=dlmread(\'Zigzag.txt\');
data=data_load(:,1:2);
real_label=data_load(:,3);

图像为:

\"\"

5. 数据

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

\"\"

 

收藏 打印