import numpy as np
import matplotlib.pyplot as plt
x = np.array([0, 1, 2, 3])
y = np.array([-1, 0.2, 0.9, 3.1])
X1 = np.vstack([x, np.ones(len(x))])
Temp = np.linalg.inv(np.matmul(X1, X1.T))
w = np.matmul(np.matmul(Temp, X1), y)
# 데이터 시각화
plt.plot(x, y, 'o', label='Original data', markersize=10)
plt.plot(x, w[0] * x + w[1], 'r', label='Fitted line')
# plt.plot(x, m*x+c, 'r', label='Fitted line')
plt.legend()
plt.show()
x1 = np.array([[0, 1, 2, 3, 4], [0, 2, 4, 5, 6]])
y1 = np.array([-1, 0.2, 0.9, 2, 3])
X2 = np.vstack([x1, np.ones(len(y1))])
Temp = np.linalg.inv(np.matmul(X2, X2.T))
w = np.matmul(np.matmul(Temp, X2), y1)
X_hat=np.matmul(w[0:2].T,x1)+w[2]
ax=plt.axes(projection='3d')
ax.plot3D(x1[0,:],x1[1,:],y1,'o',label='Original data', markersize=10)
ax.plot3D(x1[0,:],x1[1,:],X_hat,'r',label='Fitted line')
plt.legend()
plt.show()