1

我尝试了多种将高斯拟合到该散点图的方法,但对我没有任何帮助。任何帮助将不胜感激。谢谢!

from numpy import *
import matplotlib.pyplot as plt
from scipy.optimize import curve_fit

data = loadtxt("/home/***/****/***")

t,q = data[:,2], data[:,3]                         
t,q = loadtxt("/home/***/****/***", usecols = (2,3), unpack=True)

plt.scatter(t,q, marker='.', s=20)
plt.show()
4

2 回答 2

1

似乎您可以使用均值和协方差参数的定义来使用数据中的最大似然估计来拟合它们,对吗?

import numpy as np

data = np.loadtxt("/home/***/****/***", usecols=(2, 3))
mu = data.mean(axis=0)
sigma = np.cov(data, rowvar=0)

在我的理解中,这就是“合身”的意思。但是,听起来您希望在绘图上显示这些数量。这可能有点棘手,但这只是因为您需要使用一些线性代数来找到估计协方差矩阵的特征向量,然后使用它们来绘制协方差椭圆。

import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse

# compute eigenvalues and associated eigenvectors
vals, vecs = np.linalg.eigh(sigma)

# compute "tilt" of ellipse using first eigenvector
x, y = vecs[:, 0]
theta = np.degrees(np.arctan2(y, x))

ax = plt.subplot(111)

# eigenvalues give length of ellipse along each eigenvector
w, h = 2 * np.sqrt(vals)
ax.add_artist(Ellipse(mu, w, h, theta))

# show data on top of ellipse
ax.scatter(data[:, 0], data[:, 1])

plt.show()
于 2013-07-30T21:16:02.000 回答
0

这有点晚了!unpack=True但是可以通过在加载数据时包含选项来修复有关要解包的值过多的错误消息,即

data = np.loadtxt("/home/***/****/***", unpack=True, usecols=(2, 3))
于 2017-04-07T15:22:33.240 回答