如何计算 50x20 矩阵的类内散点

我正在尝试将一个大维矩阵减少到仅 2D,我正在使用 2D 数组的示例,它有效,但我需要为更高维的散点做同样的事情。我有两个类,每个类都有 50x20 维特征空间的矩阵。


对于我的例子,我有这些二维数组:


rectangles = np.array([[1,1.5,1.7,1.45,1.1,1.6,1.8],[1.8,1.55,1.45,1.6,1.65,1.7,1.75]])

triangles = np.array([[0.1,0.5,0.25,0.4,0.3,0.6,0.35,0.15,0.4,0.5,0.48],[1.1,1.5,1.3,1.2,1.15,1.0,1.4,1.2,1.3,1.5,1.0]])

之后我找到了三角形和矩形类的均值


# Calculate the mean vectors per class

mean_rectangles = np.mean(rectangles,axis=1).reshape(2,1)

    

mean_triangles = np.mean(triangles,axis=1).reshape(2,1)

通过矩形和三角形类给出的值,我用它们来计算散点:


scatter_triangles = np.dot((triangles-mean_triangles),(triangles-mean_triangles).T)

scatter_circles = np.dot((circles-mean_circles),(circles-mean_circles).T)


# Calculate the SW by adding the scatters within classes 

SW = scatter_triangles+scatter_circles+scatter_rectangles

print(SW)



plt.show()

http://img2.mukewang.com/63e1bfbf0001a75f05500499.jpg

我想知道如何找到类内的散点并以完全相同的方式绘制它们,但对于更大的数据,恰好是 50x20 矩阵?



慕盖茨4494581
浏览 55回答 1
1回答

MM们

不幸的是,Numpy 不会将数组广播到列。尝试:(np.array(c_A_array).T-c_A_array_mean).T对于所有的减法。这两个都试过了,我猜第二个更快:np.array(c_A_array)-c_A_array_mean.reshape((5,1))
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python