首页 > 编程语言 > 详细

python 生成环形人工数据集

时间:2020-02-08 16:41:07      阅读:298      评论:0      收藏:0      [点我收藏+]

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

技术分享图片

原理:先生成均匀分布的在大矩形内的数据点,在判断生成的每个数据点是否落在小矩形中,若没落在小矩形中,则保留这个点。 最终留下的点为环状数据集。

注意因为会设置保留的数据点一定会比生成的数据点少,所以将生成数据点设成较大的值。得到环状数据集后在设置想要的数据点的个数。

import numpy as np
import matplotlib.pyplot as plt

#生成均匀分布的在外矩形内的点
X_large = 0.5+2*np.random.rand(500)
Y_large = 0.5+2*np.random.rand(500)
#内矩形的坐标
X_small = (0.7,2.3)
Y_small = (0.7,2.3)
point = []
#寻找符合条件的数据点
for i in range(500):
    if not ((X_small[0]<X_large[i]<X_small[1]) and (Y_small[0]<Y_large[i]<Y_small[1])):
        point.append((X_large[i],Y_large[i]))
point = np.array(point)
#取点两百个数据点
point = point[:200]

若加入噪声则直接生成均匀数据。下面加入介于(0,3)之间的50个噪声

X_noise = 3*np.random.rand(50)
Y_noise = 3*np.random.rand(50)
noise = np.array((X_noise,Y_noise)).T

绘制最终图形

#绘制图形
fig = plt.figure()
ax = fig.add_subplot(111)
plt.scatter(point[:,0],point[:,1],c='r',marker='.')
plt.scatter(noise[:,0],noise[:,1],c='b',marker='.')
plt.show()

技术分享图片

python 生成环形人工数据集

原文:https://www.cnblogs.com/lolybj/p/12283550.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!