由 sklearn.datasets.makeblob 生成的各向同性高斯 blob 是什么意思?

机器算法验证 正态分布 Python 多元分析 数据集 scikit-学习
2022-04-02 00:00:44

有人可以解释sklearn.datasets.make_blobs(). 我没有理解它的含义,只在 sklearn 文档上找到了Generate isotropic Gaussian blobs for clustering 。我也经历了这个问题

所以,这是我的疑问

from sklearn.datasets import make_blobs
# data set generate
X, y = make_blobs(n_samples = 100000, n_features = 2, centers = 2, random_state = 2, cluster_std = 1.5)

# scatter plot of blobs
plt.scatter(X[:, 0], X[:, 1], c = y, s = 50, cmap = 'RdBu')

在此处输入图像描述

# distribution of first feature
sns.histplot(x = X[:, 0], kde = True) 

由于此特征所遵循的分布近似于正态分布。 在此处输入图像描述

# distribuution of second feature
sns.histplot(x = X[ :, 1], kde = True, color = "green", alpha = 0.2 )

第二个特征的分布是不正常的双峰分布。 在此处输入图像描述

# overall distribution of values
sns.histplot(x = X.flatten(), color = "red", kde = True, alpha = .5)

这也不正常!

在此处输入图像描述

# Variance Covrariance Matrix of Features
np.cov(X[:, 0], X[:, 1])

输出

array([[ 3.55546911,  4.70526192],
       [ 4.70526192, 19.00023664]])

这里的高斯实际上是什么意思!. 这可能是一个愚蠢的问题,所以提前道歉。

2个回答

make_blobs()函数从一个特殊的高斯混合模型中抽取样本。个簇的一般高斯混合模型的密度形式为 其中的每个聚类的权重是聚类中心,是聚类协方差。这里是指具有平均和协方差的正态高斯密度。k

p(x)=i=1kπiN(μi,Σi)
πi0i=1kπi=1μiΣiN(μi,Σi)μiΣi

特别是,对于该make_blobs()函数,每个集群或组件具有相同的采样概率并且可以指定集群中心,也可以在代码的情况下通过设置随机生成各向同性是指协方差矩阵都是对角线的事实 其中是通过的标准偏差in. 默认情况下,所有集群都将具有相同的标准差。除非只有一个集群,否则高斯混合模型不是高斯模型,这就是为什么您的图看起来不是高斯的,而是高斯组合的原因。πi=1/kcenters = 2

Σi=[σi200σi2]
σi

感谢 Talsup,给出了很好的解释简而言之,我正在分享这些东西。 在此处输入图像描述

用于理解的代码片段在 make_blobs() 这里。 make_blob_notebook