Mình đang học về softmax regression trên link https://machinelearningcoban.com/2017/02/17/softmax/ tới đoạn visualize softmax regression thì không hiểu lắm mong mọi người giúp đỡ ạ. link code của tác giả https://github.com/tiepvupsu/tiepvupsu.github.io/blob/master/assets/13_softmax/Softmax%20Regression.ipynb
mình đọc thì thấy tác giả sử dụng hàm plt.contour để chiếu dữ liệu 3d thành 2d nhưng không tài nào hiểu nổi.
def pred(W, X):
A = softmax_stable(W.T.dot(X))
return np.argmax(A, axis = 0)
means = [[2, 2], [8, 3], [3, 6]]
cov = [[1, 0], [0, 1]]
N = 500
X0 = np.random.multivariate_normal(means[0], cov, N)
X1 = np.random.multivariate_normal(means[1], cov, N)
X2 = np.random.multivariate_normal(means[2], cov, N)
X = np.concatenate((X0, X1, X2), axis = 0).T # each column is a datapoint
X = np.concatenate((np.ones((1, 3*N)), X), axis = 0)
C = 3
original_label = np.asarray([0]*N + [1]*N + [2]*N).T
import matplotlib.pyplot as plt
def display(X, label):
X0 = X[:, label == 0]
X1 = X[:, label == 1]
X2 = X[:, label == 2]
plt.plot(X0[0, :], X0[1, :], 'b^', markersize = 4, alpha = .8)
plt.plot(X1[0, :], X1[1, :], 'go', markersize = 4, alpha = .8)
plt.plot(X2[0, :], X2[1, :], 'rs', markersize = 4, alpha = .8)
plt.axis('off')
plt.plot()
plt.show()
W_init = np.random.randn(X.shape[0], C)
W = softmax_regression(X, original_label, W_init, eta)
print(W[-1])
[[ 7.95819763 -4.03893973 -4.21902437]
[ 0.23743917 2.95280664 0.40718706]
[-1.07291526 -1.42866515 1.56477536]]
xm = np.arange(-2, 11, 0.025)
xlen = len(xm)
ym = np.arange(-3, 10, 0.025)
ylen = len(ym)
xx, yy = np.meshgrid(xm, ym)
print(np.ones((1, xx.size)).shape)
xx1 = xx.ravel().reshape(1, xx.size)
yy1 = yy.ravel().reshape(1, yy.size)
XX = np.concatenate((np.ones((1, xx.size)), xx1, yy1), axis = 0)
print(XX.shape)
Z = pred(W[-1], XX)
Z = Z.reshape(xx.shape)
CS = plt.contourf(xx, yy, Z, 200, cmap='jet', alpha = .1)
plt.xlim(-2, 11)
plt.ylim(-3, 10)
plt.xticks(())
plt.yticks(())
display(X[1:, :], original_label)
plt.savefig('ex1.png', bbox_inches='tight', dpi = 300)
plt.show()
Đây la ảnh tác giả tạo ra ạ