Я хотел бы найти пороговое значение для бимодального распределения. Например, бимодальное распределение может выглядеть следующим образом:Определение порогового значения для бимодального распределения с помощью кластеризации KMeans
import numpy as np
import matplotlib.pyplot as plt
np.random.seed(45)
n = 1000; b = n//10; i = np.random.randint(0,2,n)
x = i*np.random.normal(-2.0,0.8,n) + (1-i)*np.random.normal(2.0,0.8,n)
_ = plt.hist(x,bins=b)
попытка найти центры кластеров не работали, так как я не был уверен, как матрица, ч, должны быть отформатированы :
from sklearn.cluster import KMeans
h = np.histogram(x,bins=b)
h = np.vstack((0.5*(h[1][:-1]+h[1][1:]),h[0])).T # because h[0] and h[1] have different sizes.
kmeans = KMeans(n_clusters=2).fit(h)
Я бы ожидать, чтобы быть в состоянии найти центры кластеров вокруг -2 и 2. пороговое значение затем будет серединой двух центров кластеров.