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.

In [22]:
x1_fit = np.arange(-4,6,0.5)
x2_fit = np.arange(-4,10,0.5)

Provera klasifikacije kordinate.

In [23]:
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

In [24]:
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)");