import numpy as np
import matplotlib.pyplot as plt


def dataset(size: int, a:float, noise: float):
	X = np.random.uniform(0,100,size)
	k = np.random.normal(0,noise,size)
	Y = a*X+k
	return (X,Y)

def regression(X,Y):
    return np.sum(X*Y)/np.sum(X*X)

def loss(X,Y,a):
    return np.sum((a*X-Y)**2)/X.shape[0]

noise = 500
alpha = 45

X,Y = dataset(100, alpha, noise)
plt.scatter(X,Y)
plt.show()

alphaML = regression(X,Y)
plt.scatter(X,Y)
plt.plot(X,alphaML*X, color="red")
plt.show()

print(f"Loss {loss(X,Y,alphaML)}")
# plt.savefig("ex1.2.svg", format="svg", bbox_inches="tight")
