用高斯分布模型(GMM)对输入进行概率预测,输出概率列表,与给定阈值进行比较,最后输出符合条件的下标
a = torch.randn(5,1)
print(a)
gmm = GaussianMixture(n_components=2, max_iter=10, tol=1e-2, reg_covar=5e-4)
gmm.fit(a)
prob = gmm.predict_proba(a)
print(prob)
print(gmm.means_)
means = gmm.means_.argmin()
print(means)
prob = prob[:, gmm.means_.argmin()]
print(prob)
pred = prob > 0.5
print(pred)
print(pred.nonzero())
pred_idx = pred.nonzero()[0]
print(pred_idx)
print(type(pred_idx))
--------------------------------------------------------------
tensor([[ 0.0500],
[ 0.3039],
[-1.1827],
[-0.0728],
[ 0.4576]])
[[1.00000000e+00 0.00000000e+00]
[1.00000000e+00 0.00000000e+00]
[2.27977968e-10 1.00000000e+00]
[1.00000000e+00 0.00000000e+00]
[1.00000000e+00 0.00000000e+00]]
[[ 0.18468334]
[-1.18270671]]
1
[0. 0. 1. 0. 0.]
[False False True False False]
(array([2], dtype=int64),)
[2]
<class 'numpy.ndarray'>