Hey @Debatreyo_Roy,

plt.scatter(X[0, :], X[1, :], c=Y, cmap=colors.ListedColormap(['blue', 'red']));
In section 2.2 - Dataset, we can see that X
is a 2-dimensional dataset, i.e., it has 30 samples, each sample containing 2 features. So, to plot X
in 2-dimensions, we have used plt.scatter()
, which requires the x
and y
co-ordinates for all the 30 samples in our dataset. So, X[0, :]
represents the x-coordinates of the 30 samples, and X[1, :]
represents the y-coordinates of the 30 samples in our dataset. However, as you can see in the above plot, there are only 4 points visible. This is because the dataset doesn’t have 30 unique samples, instead the dataset has 4 unique samples only.
x_line = np.arange(np.min(X[0,:]),np.max(X[0,:])*1.1, 0.1)
ax.plot(x_line, - W[0,0] / W[0,1] * x_line + -b[0,0] / W[0,1] , color="black")
Now, let’s consider the above lines of code. These plot a straight line in the 2-dimensional space, using the learnt parameters. In the lab, we have considered the following equation of line: W_1 x_1 + W_2 x_2 + b = 0, so, if we try to find out x_2 (which is plotted on the Y dimension), in terms of x_1 (which is plotted on the X dimension), we will get:
x_2 = \frac{-W_1}{W_2} x_1 + \frac{-b}{W_2}
Now, we are trying to plot the decision boundary based on the learnt parameters. So, we sample a number of points on the x-axis, specifically between the min and max value of the x-coordinates of our samples, represented by x_line
. For these sampled x-coordinates, we compute the y-coordinates using the above equation, and we plot the line, i.e., the decision boundary.
Voila, we are done
Let us know if this helps.
Cheers,
Elemento