使用Matplotlib的pyplot绘制一个分隔两个类别的决策边界

16 浏览
0 Comments

使用Matplotlib的pyplot绘制一个分隔两个类别的决策边界

我真的需要一个提示来帮助我绘制一个决策边界来分离两类数据。我使用Python的NumPy创建了一些样本数据(来自高斯分布)。在这种情况下,每个数据点是一个二维坐标,即一个2行1列的向量。例如,

[ 1
  2 ]

假设我有两个类别,class1和class2,我通过下面的代码为class1和class2分别创建了100个数据点(分别赋值给变量x1_samples和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 # 转换为1列向量
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

当我为每个类别绘制数据点时,它看起来像这样:

enter image description here

现在,我想出了一个决策边界的方程,并希望将其添加到图中。然而,我不太确定如何绘制这个函数:

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

我真的很感激任何帮助!

编辑:

直观地说(如果我的数学没算错的话),当我绘制函数时,我希望决策边界看起来像这条红线...

enter image description here

0