python创建数据集_python 生成环形人工数据集

生成如图所示的环形数据集,这里外矩形的X跟Y的范围为(0.5,2.5),内矩形X跟Y的范围为(0.7,2.3)。

原理:依次迭代生成先生成均匀分布的在大矩形内的数据点,在判断生成的每个数据点是否落在介于大矩形跟小矩形中即环中,若落在环中,则保留这个点。 若生成的点的数量到预期值,则停止迭代。

若直接生成介于环中的数据,则环中的数据点会不均匀,因为四角会重复生成。

加入噪声与生成数据类似,只是判断若生成的噪声不在环形中,则此数据为噪声数据。

def get_data(num_point,num_noise,seed):

"""

生成环形数据与噪声

@param num_point: 正常数据点的个数

@param num_noise: 噪声的个数

@param seed: 随机数种子。若seed值设置的一样,则每次随机生成的数据点都一样

@return: 环形数据,噪声

"""

np.random.seed(seed)

# 设置生成环形的坐标数据,即大矩形跟小矩形坐标

X_small = (0.7, 2.3)

Y_small = (0.7, 2.3)

X_large = (0.5, 2.5)

Y_large = (0.5, 2.5)

point = []

# 若生成的点的数量没有到达预期目标将不停迭代

while len(point)!=num_point:

#生成介于大矩形的均匀分布的数据点

X_point = X_large[0] + (X_large[1]-X_large[0]) * np.random.rand()

Y_point = Y_large[0] + (Y_large[1]-Y_large[0]) * np.random.rand()

#判断此点是否符合要求

if (X_large[0]

or Y_large[0]

point.append((X_point, Y_point))

point = np.array(point)

#生成噪声

noise_Xcor = (0,3)

noise_Ycor = (0,3)

noise = []

while len(noise) != num_noise:

X_noise = noise_Xcor[0]+(noise_Xcor[1]-noise_Xcor[0]) * np.random.rand()

Y_noise = noise_Ycor[0]+(noise_Ycor[1]-noise_Ycor[0]) * np.random.rand()

if not (X_large[0]

or Y_large[0]

noise.append((X_noise, Y_noise))

return np.array(point),np.array(noise)

绘制最终图形

def draw(data_point, data_noise):

'''

绘制图像

@param data_point: 环形数据

@param data_noise: 噪声

@return:

'''

fig = plt.figure()

ax = fig.add_subplot(111)

plt.scatter(data_point[:, 0], data_point[:, 1], c='r', marker='.')

plt.scatter(data_noise[:, 0], data_noise[:, 1], c='b', marker='.')

plt.show()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值