Python 从高斯混合模型中采样数据点

Python 从高斯混合模型中采样数据点,python,scikit-learn,data-science,gaussian,mixture-model,Python,Scikit Learn,Data Science,Gaussian,Mixture Model,我对python和GMM真的很陌生。我最近学习了GMM,并试图从中实现代码 我在运行gmm.sample()方法时遇到了一些问题: 错误显示: TypeError: sample() got an unexpected keyword argument 'random_state' 我检查了最新的文档,发现方法样本应该只包含n,这表示要生成的样本数。但当我删除“random_state=42”时,会出现新的错误: 代码: Xnew = gmm16.sample(400) plt.scatter

我对python和GMM真的很陌生。我最近学习了GMM,并试图从中实现代码

我在运行gmm.sample()方法时遇到了一些问题:

错误显示:

TypeError: sample() got an unexpected keyword argument 'random_state'
我检查了最新的文档,发现方法样本应该只包含n,这表示要生成的样本数。但当我删除“random_state=42”时,会出现新的错误:

代码:

Xnew = gmm16.sample(400)
plt.scatter(Xnew[:, 0], Xnew[:, 1])
错误:

TypeError: tuple indices must be integers or slices, not tuple
当您实现Jake VanderPlas的代码时,是否有人遇到此问题?我怎样才能修好它

我的Jupyter:

笔记本服务器的版本为:5.7.4

Python 3.7.1(默认值,2018年12月14日,13:28:58)

有关详细信息,请键入“版权”、“信用”或“许可证”

IPython 7.2.0——一种增强的交互式Python。键入“?”以获取帮助


您的问题在于将数据输入散点图的方式。 尤其是元组中有一个numpy数组,并且索引的方式是不正确的。 试试这个

plt.scatter(Xnew[0][:,0], Xnew[0][:,1])

基本上,我们拥有的是第一个索引
Xnew[0]
将指向您想要的元组中的元素(numpy数组),第二个将根据需要对其进行切片
[:,1]
这里我们获取所有行和第二列。

您将获得
类型错误
,因为
示例
方法返回一个
元组
,请参阅

这应该可以做到:

Xnew, Ynew = gmm16.sample(400)  # if Ynew is valuable
plt.scatter(Xnew[:, 0], Xnew[:, 1])

Xnew, Ynew = gmm16.sample(400)  # if Ynew is valuable
plt.scatter(Xnew[:, 0], Xnew[:, 1])
Xnew, _ = gmm16.sample(400)  # if Ynew isn't valuable
plt.scatter(Xnew[:, 0], Xnew[:, 1])