Zanimljivo je pogledati i kako se cela 2D ravan preslikava u klase.
U tu svrhu generišimo kvadratnu mrežu od -5 do 5 po obe koordinate sa koracima 0.5.
x1_fit = np.arange(-4,6,0.5)
x2_fit = np.arange(-4,10,0.5)
Provera klasifikacije kordinate.
for i in range(len(x1_fit)):
for j in range(len(x2_fit)):
temp = np.array([x1_fit[i] , x2_fit[j]])
temp = temp.reshape(1,-1)
temp = clf.predict(temp)
if (temp ==1):
plt.scatter(x1_fit[i], x2_fit[j], c=u'b', alpha = 0.5)
else:
plt.scatter(x1_fit[i], x2_fit[j], c=u'r', alpha = 0.5)
plt.scatter(X1[:,0], X1[:,1], c='b', edgecolor='w', s=70)
plt.scatter(X2[:,0], X2[:,1], c='r', edgecolor='w', s=70)
plt.title("Vizuelizacija linearne diskriminacione funkcije")
plt.show()
Sledećim naredbama pristupamo koeficijentima LDA klasifikatora, pomocu kojih iscrtavamo samu linearnu funkciju. Na engleskom jeziku ova funkcija ima naziv decision function/boundary
plt.scatter(X[:1000,0], X[:1000,1],c=u'b')
plt.scatter(X[1000:,0], X[1000:,1], c=u'r')
w = clf.coef_[0]
k = -w[0] / w[1]
xx = np.linspace(-0.5, 3)
yy = k * xx - (clf.intercept_[0]) / w[1]
plt.plot(xx, yy, 'k-')
plt.title("Funkcija odliučivanja (engl. decision boundary)");