Le traçage d'une décision de la frontière séparant les 2 classes à l'aide de Matplotlib est pyplot

J'ai vraiment pu utiliser une astuce pour m'aider à le traçage d'une décision de la frontière distincte pour les classes de données. J'ai créé un exemple de données (à partir d'une distribution Gaussienne) via Python NumPy. Dans ce cas, chaque point de données est un 2D coordonner, c'est à dire, un 1 vecteur colonne composé de 2 lignes. E. g.,

[ 1
  2 ]

Imaginons que j'ai 2 classes classe1 et classe2, et j'ai créé de 100 points de données pour class1 et 100 points de données pour class2 via le code ci-dessous (affectés aux variables x1_samples et x2_samples).

mu_vec1 = np.array([0,0])
cov_mat1 = np.array([[2,0],[0,2]])
x1_samples = np.random.multivariate_normal(mu_vec1, cov_mat1, 100)
mu_vec1 = mu_vec1.reshape(1,2).T # to 1-col vector

mu_vec2 = np.array([1,2])
cov_mat2 = np.array([[1,0],[0,1]])
x2_samples = np.random.multivariate_normal(mu_vec2, cov_mat2, 100)
mu_vec2 = mu_vec2.reshape(1,2).T

Quand j'ai tracé les points de données pour chaque classe, il devrait ressembler à ceci:

Le traçage d'une décision de la frontière séparant les 2 classes à l'aide de Matplotlib est pyplot

Maintenant, je suis venu avec une équation d'une décision de la limite de séparer les deux classes et que vous souhaitez ajouter à l'intrigue. Cependant, je ne suis pas vraiment sûr de savoir comment je peut tracer cette fonction:

def decision_boundary(x_vec, mu_vec1, mu_vec2):
    g1 = (x_vec-mu_vec1).T.dot((x_vec-mu_vec1))
    g2 = 2*( (x_vec-mu_vec2).T.dot((x_vec-mu_vec2)) )
    return g1 - g2

Je serais vraiment reconnaissant de toute aide!

EDIT:
Intuitivement (Si j'ai fait mon droit de mathématiques) j'attendrais la décision de limite à ressembler à quelque chose comme cette ligne rouge quand j'ai tracer la fonction...

Le traçage d'une décision de la frontière séparant les 2 classes à l'aide de Matplotlib est pyplot

  • Qu'est-ce que le x_vec dans le decision_boundary fonction censé être? Êtes-vous juste essayer de tracer une ligne de séparation entre les deux classes?
  • Je n'ai pas de temps pour répondre à droit de savoir, mais il semble que vous voulez l'0 contour de decision_boundary. Il est plus facile de simplement évaluer la fonction sur une grille régulière, et le contour du résultat. Nous espérons que vous avez pointé dans la bonne direction!
  • Merci. Oui, doit être une ligne, j'ai téléchargé un exemple img à la question d'origine
InformationsquelleAutor | 2014-03-10