双月数据生成及其常见算法(一)

双月数据部分:

数据描述:上下两个半圆。可以通过调整参数进行半圆弧位置的变化。

定义基础参数:包括两个圆之间的半径以及上下两个圆之间的位置偏差XPosition、YPosition。

NumbleCount为生成的一个半圆的数据点个数。

PI = 3.141
CicleW = 2
CicleR = 5

XPosition = 5
YPosition = 4

NumbleCount = 1000

 生成数据部分:作者使用了,极坐标的方式来生成随机的散点图,通过约束方程来对生成的散点图进行约束。通过对符合要求的数据点来进行计数,生成对应数据。

并且上半部分数据添加标签1,下半部分添加标签-1。

#定义约束方程
UpArea = 2*PI*(CicleW+CicleR)
DownArea = 2*PI*(CicleR)

count = 0
ClassX1 = []
ClassY1 = []
DataLabel = []
while(count < 2*NumbleCount):
    Delter = random.uniform(0,PI) * (360/(2*PI))
    DelterP = random.uniform(CicleR,CicleR+CicleW)
    #DelterP*(math.sin(Delter)+math.cos(Delter))
    if DelterP*math.sin(Delter) > 0 :
        ClassX1.append(DelterP*math.cos(Delter))
        ClassY1.append(DelterP*math.sin(Delter))
        DataLabel.append(1)
        count = count + 1

    Delter = random.uniform(0, -PI) * (360 / (2 * PI))
    if DelterP * math.sin(Delter) < 0:
        ClassX1.append(DelterP * math.cos(Delter)+XPosition)
        ClassY1.append(DelterP * math.sin(Delter)-YPosition)
        DataLabel.append(-1)
        count = count + 1

print("数据生成完成\n数据生成总量为:{}".format(len(ClassX1)))
plot.title('Creat Data')
plot.plot(ClassX1, ClassY1, 'r+')

之后数据的保存,通过csv或者mat类型的格式保存到文件中,便于后续算法的使用。

结果:

线型可分类型:

双月数据生成及其常见算法(一)_第1张图片

 线型不可分类型:

双月数据生成及其常见算法(一)_第2张图片

 

 

你可能感兴趣的:(算法,python,机器学习,回归)