【发布时间】:2018-04-17 07:43:55
【问题描述】:
我正在研究一个 Python 函数,我想在其中建模一个高斯分布,但我被困住了。
import numpy.random as rnd
import numpy as np
def genData(co1, co2, M):
X = rnd.randn(2, 2M + 1)
t = rnd.randn(1, 2M + 1)
numpy.concatenate(X, co1)
numpy.concatenate(X, co2)
return(X, t)
我正在尝试两个大小为 M 的集群,集群 1 以 co1 为中心,集群 2 以 co2 为中心。 X 将返回我要绘制的数据点,t 是目标值(如果集群 1 为 1,如果集群 2 为 2),因此我可以按集群对其进行着色。
在这种情况下,t 的大小为 1s/2s 的 2M,X 的大小为 2M * 1,其中如果 X[i] 在集群 1 中,则 t[i] 为 1,对于集群 2 也是如此。
我认为开始执行此操作的最佳方法是使用 numpys random 生成数组数组。我很困惑的是如何根据集群使其居中?
最好的方法是生成一个大小为 M 的集群,然后将 co1 添加到每个点?我如何让它随机,并确保 t[i] 正确着色?
我正在使用这个函数来绘制数据:
def graphData():
co1 = (0.5, -0.5)
co2 = (-0.5, 0.5)
M = 1000
X, t = genData(co1, co2, M)
colors = np.array(['r', 'b'])
plt.figure()
plt.scatter(X[:, 0], X[:, 1], color = colors[t], s = 10)
【问题讨论】:
-
使用numpy.random.multivariate_normal。将
mean参数作为长度为 2 的向量给出;这将是集群的位置。 -
@WarrenWeckesser 谢谢沃伦,但是我将如何使它使 X 是随机的并且 t 会告诉我它属于哪个集群?
标签: python numpy cluster-analysis gaussian