the solution can be summarized in the next steps:
-Creating 2 dimensional random array with .randn under 0.5 maximum margin each
-Divide the distribution points into 4 groups, and move each distribution center to corresponding quadrant
-Create the array colour variable in function of each point position
Code: Select all
import matplotlib.pyplot as plt import numpy as np quantity = 100 def XOR(x1,x2): xorResult = False if x1 > 0 and x2 >= 0: xorResult = False elif x1 > 0 and x2 < 0: xorResult = True elif x1 <= 0 and x2 <= 0: xorResult = False elif x1 <=0 and x2 > 0: xorResult = True return xorResult def colorDecider(x,quantity): colourSequence = np.zeros(quantity) for i in range(0,quantity): colourSequence[i] = int(XOR(x[i],x[i])) return colourSequence quantity = 700 x =(np.random.randn(quantity,2))*0.125 x[:int(quantity/4)] += 0.5 x[int(quantity/4):int(quantity/2)] -= 0.5 x[int(quantity/2):int(3*quantity/4)] += [0.5, -0.5] x[int(3*quantity/4):quantity] += [-0.5, 0.5] y = colorDecider(x,quantity) plt.scatter(x[:,0], x[:,1], c=y) plt.show()
So, in my opinion, this solution is a work around, because if I see the solution, the distribution looks like more homogeneous, not like Gauss distribution as my solution shows. I think that the correct solution would be a crazy mathematical function that calculate points position and assign colours and epic things like that.