gpt4 book ai didi

python - 使用python生成数据簇?

转载 作者:行者123 更新时间:2023-11-28 18:18:13 25 4
gpt4 key购买 nike

我正在研究一个 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 的大小为 2M,即 1s/2s,X 的大小为 2M * 1,其中如果 X[i] 在集群 1 中,则 t[i] 为 1,对于集群 2 也是如此。

我认为开始执行此操作的最佳方法是使用 numpys 随机生成数组数组。我很困惑的是如何让它根据集群居中?


最好的方法是生成大小为 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)

最佳答案

为了您的目的,我会选择 sklearn 样本生成器 make_blobs :

from sklearn.datasets.samples_generator import make_blobs

centers = [(-5, -5), (5, 5)]
cluster_std = [0.8, 1]

X, y = make_blobs(n_samples=100, cluster_std=cluster_std, centers=centers, n_features=2, random_state=1)

plt.scatter(X[y == 0, 0], X[y == 0, 1], color="red", s=10, label="Cluster1")
plt.scatter(X[y == 1, 0], X[y == 1, 1], color="blue", s=10, label="Cluster2")

你可以用它生成多维集群。 X 生成数据点,y 确定X 中的对应点属于哪个簇。

enter image description here

对于您在这种情况下尝试实现的目标而言,这可能太多了,但总的来说,我认为最好依赖也可用于其他情况的更通用且经过更好测试的库代码。

关于python - 使用python生成数据簇?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47115025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com