python - 有没有办法计算 make_blob 生成的数据集的 cluster_std?
问题描述
make_blobs()
用于生成用于聚类的各向同性高斯斑点。
参数cluster_std
是集群的标准偏差。
我生成了一个数据集:
x, y = make_blobs(n_samples=100, centers=6,
cluster_std=0.60, random_state=1234)
并试图计算标准偏差:
np.std(x)
输出
5.122249276993561
这与初始参数相去甚远0.60
。
有没有办法正确计算标准差?
解决方案
从make_blobs()
中,您可以看到标准偏差的规范0.60
已作为参数接收generator.normal(loc=centers[i], scale=std, size=(n, n_features))
,这是 sklearn 为每个集群生成数据点的方式。
您应该计算每个集群中每个特征的标准差:
import numpy as np
for i in set(y):
print('--> label {}'.format(i))
for j in range(x.shape[1]):
print('std for feature {}: {}'.format(j, np.std(x[y==i][:,j])))
你得到:
--> label 0
std for feature 0: 0.345293121830674
std for feature 1: 0.7142696641502757
--> label 1
std for feature 0: 0.5041694666576663
std for feature 1: 0.6269103210381141
--> label 2
std for feature 0: 0.4168488521809934
std for feature 1: 0.6994177825578384
--> label 3
std for feature 0: 0.5760022004454849
std for feature 1: 0.580543624607708
--> label 4
std for feature 0: 0.5977962642901783
std for feature 1: 0.5271686872743192
--> label 5
std for feature 0: 0.6462807280468825
std for feature 1: 0.4928028738564903
推荐阅读
- c# - 我如何声明:新浮点[,][,] {???}
- python - 检查不同 numpy 数组中的相同行
- directx - 直线的 Direct2D/DirectX 光栅化规则
- r - 手动为 Leaflet 地图创建点
- python - 使用求解器进行 Python 优化
- perl - GeoIP2 模块的文档和代码概要在哪里?
- javascript - 散点图更新:相同数量的数据点,但新的数据点
- angular - Angular - 元素的条件属性
- oracle - 无法复制 java.sql.SQLException:ORA-00060:等待资源时检测到死锁
- python - Groupby 以及 value_counts 如何工作