上記のコメントでChrisの推測を外して、ガウス分布モデルの線形結合であると仮定して、合理的な方法でポイントをクラスター化したいと仮定しています。以下では、numpy
を使用してサンプルデータセットを作成し、GMモデリング用にsklearn
、結果を表示するためにpylab
を使用する例を示しました。
import numpy as np
from pylab import *
from sklearn import mixture
# Create some sample data
def G(mu, cov, pts):
return np.random.multivariate_normal(mu,cov,500)
# Three multivariate Gaussians with means and cov listed below
MU = [[5,3], [0,0], [-2,3]]
COV = [[[4,2],[0,1]], [[1,0],[0,1]], [[1,2],[2,1]]]
A = [G(mu,cov,500) for mu,cov in zip(MU,COV)]
PTS = np.concatenate(A) # Join them together
# Use a Gaussian Mixture model to fit
g = mixture.GMM(n_components=len(A))
g.fit(PTS)
# Returns an index list of which cluster they belong to
C = g.predict(PTS)
# Plot the original points
X,Y = map(array, zip(*PTS))
subplot(211)
scatter(X,Y)
# Plot the points and color according to the cluster
subplot(212)
color_mask = ['k','b','g']
for n in xrange(len(A)):
idx = (C==n)
scatter(X[idx],Y[idx],color=color_mask[n])
show()
分類方法の詳細については、sklearn.mixture exampleページを参照してください。
あなたが探しているものを見つけることができるように、同等の 'matlab'関数は何ですか? – Hooked
私は関数の名前を覚えていません。しかし、私はそれを何年か前に使っていました。また、お試しいただきありがとうございます –
matlab関数はここにあります:http://www.mathworks.co.uk/help/toolbox/stats/bq_679x-24.html –