有没有一种聚类算法可以使n个簇和n+1个“其他”簇?
人工智能
无监督学习
数据科学
聚类
2021-10-19 09:48:15
1个回答
所以,我准备了一些类似于你的草图的数据:
n , u = np.random.normal , np.random.uniform
x = np.concatenate([ n(1.0,0.2,100), n(3.0,0.3,100), u(0,10.0,100)])
y = np.concatenate([ n(7.0,0.4,100), n(5.0,0.3,100), u(0,10.0,100)])
# lets shuffle it a bit
idx = np.arange(x.shape[0])
np.random.shuffle(idx)
data = np.array([x,y])[:,idx]
然后我只是尝试使用sklearn.mixture.GaussianMixture
n+1 = 3 个组件和默认参数:
gmm = GaussianMixture(n_components=3).fit(data.T)
cls = gmm.predict_proba(data.T).argmax(axis=1)
# Plotting
color = [['r','k','g'][i] for i in cls]
scatter(data[0],data[1],c=color, marker='.')
scatter(gmm.means_[:,0],gmm.means_[:,1],c='b',marker='o')
这看起来非常像你画的东西。
其它你可能感兴趣的问题