Если мы не упоминаем значение axis
в np.std()
, то все точки данных объединяются в один массив, а затем вычисляется стандартное отклонение.
С Документация :
Ось: Нет или int или кортеж из целых, необязательные оси или осивдоль которого
вычисляется стандартное отклонение.По умолчанию вычисляется стандартное отклонение
уплощенного массива.
Даже если мы упомянем ось, мы не получим желаемый результат
np.std(x,axis=0)
array([5.51732287, 4.27190484])
Причинастандартное отклонение, которое мы предоставили ранее, относится к каждому кластеру, а не ко всему набору данных.
С Документация :
cluster_std: число с плавающей точкой или последовательность с плавающей точкой, необязательно (по умолчанию = 1,0) Стандартное отклонение
кластеров.
Теперь, если мы вычислим стандартное отклонение для каждого кластера:
>>> sample_size = 100
>>> x, y = make_blobs(n_samples=sample_size, centers=6,
cluster_std=0.60, random_state=1234)
>>> for i in range(6):
>>> print(np.std(x[y==i], axis=0))
[0.34529312 0.71426966]
[0.50416947 0.62691032]
[0.41684885 0.69941778]
[0.5760022 0.58054362]
[0.59779626 0.52716869]
[0.64628073 0.49280287]
Тем не менее, значения не всегда близки к данному значению 0.60
.
Теперь вычисляем статистическую часть!Только если мы увеличим размер выборки, мы увидим, что стандартное отклонение выборки становится близким к стандартному отклонению совокупности (это значение, которое мы указали ранее).
Если установить sample_size
на 10,000,000
результаты кажутся довольно близкими !!
[0.600691 0.60049266]
[0.60009299 0.60028479]
[0.60048685 0.60019785]
[0.60000098 0.60000844]
[0.59989123 0.60017014]
[0.60010969 0.59936852]