我正在编写一个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以co 1为中心,簇2以co2为中心。X将返回我要绘制的数据点,t是目标值(如果聚类1,则为1,如果聚类2,则为2),因此我可以按聚类对其进行着色。
在这种情况下,t是1 s/2s的大小2 M,并且X是大小2 M * 1,其中如果X[i]在簇1中,则t[i]是1,并且对于簇2也是相同的。
我认为最好的方法是使用numpys random生成数组。我困惑的是如何根据聚类将其居中?
最好的方法是生成一个大小为M的簇,然后将co 1添加到每个点上吗?我怎样才能使它随机,并确保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)
2条答案
按热度按时间zbsbpyhn1#
对于你的目的,我会选择
sklearn
样本生成器make_blobs:你可以用它来生成多维集群。
X
产生数据点,y
确定X
中的对应点属于哪个聚类。这对于您在这种情况下试图实现的目标来说可能太多了,但通常情况下,我认为最好依靠更通用和更好测试的库代码,这些代码也可以用于其他情况。
0s7z1bwu2#
你可以使用类似下面的代码: