【发布时间】:2020-07-01 18:18:10
【问题描述】:
我正在尝试将细胞分类为群体。当我使用:
gmix = mixture.GMM(n_components=3, covariance_type='full')
gmix.fit(samples)
意思是输出,从下面的代码,按顺序改变,除非我设置:
np.radom.seed(0).
print ("gmix.means \n", gmix.means_)
colors = ['r' if i==0 else ('g' if i==1 else ('b' if i ==2 else 'm'))for i in gmix.predict(samples)]
我想要按 X 轴均值排序的类(每个类的第一项),即:
[[ 3.25492404e+02 2.88403293e-02]
[ 3.73942908e+02 3.25283512e-02]
[ 5.92577646e+02 4.40595768e-02]]
所以在上面的代码中,红色总是 325,绿色 372 和蓝色 592。目前我认为没有对输出进行排序。
我试过了:
gmix.means_ = np.sort(gmix.means_, axis = 0)
但是 gmix.covars_ 和 gmix.weights_ 也需要相应地排序,这就是我卡住的地方!
非常感谢!
2016 年 4 月 5 日编辑:
感谢您的帮助并引导我朝着正确的方向前进。这是我写得不好但工作的版本:
sort_indices = gmix.means_.argsort(axis = 0)
order = sort_indices[:, 0]
print('\norder:', order)
gmix.means_ = gmix.means_[order,:]
gmix.covars_ = gmix.covars_[order, :]
print ("\n sorted gmix.covars \n", gmix.covars_)
print ("\n\nori gmix.weights \n", gmix.weights_)
w = np.split(gmix.weights_,3)
w = np.asarray(w)
w = np.ravel(w[order,:])
gmix.weights_ = w
【问题讨论】:
标签: python scikit-learn