我有一个特征数据库,一个2D np.array (2000样本,每个样本包含100个特征,2000 X 100)。我想使用python将高斯分布拟合到我的数据库中。我的代码如下:
data = load_my_data() # loads a np.array with size 2000x200
clf = mixture.GaussianMixture(n_components= 50, covariance_type='full')
clf.fit(data)我不确定参数,例如covariance_type,以及如何调查是否成功地进行了匹配。
编辑:--我调试代码以调查clf.means_正在发生的情况,并生成一个矩阵n_components X size_of_features 50 X20)。有什么方法可以让我检查拟合是否成功,或者绘制数据?高斯混合(例如指数混合物,我找不到任何可用的实现)的替代方案是什么?
发布于 2017-06-20 11:09:23
我想你用的是滑雪套餐。
一旦你适应,然后键入
print clf.means_如果它有输出,那么数据就会被安装,如果它会产生误差,而不是拟合。
希望这能帮到你。
发布于 2017-07-04 10:40:04
您可以使用PCA对3D空间(比方说)进行降维,然后绘制方法和数据。
发布于 2017-07-04 14:04:21
在尝试确定分布之前,总是倾向于选择一组减少的候选人(换句话说,使用Cullen & Frey拒绝不太可能的候选人),然后选择最佳的结果。
您只需在can中创建所有可用发行版的列表。有两个分布和随机数据的示例:
import numpy as np
import scipy.stats as st
data = np.random.random(10000)
#Specify all distributions here
distributions = [st.laplace, st.norm]
mles = []
for distribution in distributions:
pars = distribution.fit(data)
mle = distribution.nnlf(pars, data)
mles.append(mle)
results = [(distribution.name, mle) for distribution, mle in
zip(distributions, mles)]
best_fit = sorted(zip(distributions, mles), key=lambda d: d[1])[0]
print 'Best fit reached using {}, MLE value: {}'.format(best_fit[0].name, best_fit[1])https://stackoverflow.com/questions/44649272
复制相似问题