2017-10-13 4 views
0

Je fais une classification non linéaire à deux classes et les données ont trois dimensions x = données [:, 0] y = données [:, 1], z = données [:, 2].Comment tracer une fonction avec l'entrée dans l'axe y et la sortie dans l'axe x

Je souhaite tracer une frontière de décision sur le plan x-y et également les données de diffusion simultanément, pour voir si elles correspondent bien aux données. La fonction de résultats I obtenu est une fonction sinusoïdale avec y entrée étant et x étant sortie comme ceci:

x = 2,2 * sin (0,44 - 0,69 * y) - 0,61

I un nouveau pour python et ont problème de comploter cela. Maintenant, j'ai écrit quelque chose comme ceci:

x,y,c = np.loadtxt('bricks.csv',delimiter=',', unpack=True) 
plt.scatter(x,y,c=c) 
plt.show() 



def decision_boundary(x_2): 
    x_1= float(2.2)*np.sin(0.44 - 0.69*x_2) - 0.61 
    return x_1 

x2 = np.arange(-5.0, 5.0, 0.1) 
plt.plot(decision_boundary(x2),x2) 

, qui donnent un mauvais chiffre.Peut-être quelqu'un m'aider? Merci!

Répondre

0

Il vous suffit d'inverser les valeurs que vous passez à l'intrigue.

import matplotlib.pyplot as plt 
def decision_boundary(x_2): 
    x_1= float(2.2)*np.sin(0.44 - 0.69*x_2) - 0.61 
    return x_1 

x2 = np.arange(-5.0, 5.0, 0.1) 
plt.plot(x2,decision_boundary(x2)) 
plt.show() 

enter image description here