我已经尝试了多种方法将高斯拟合到这个散点图,但没有任何方法对我有效。任何帮助将不胜感激。谢谢!
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()
答案 0 :(得分: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()
答案 1 :(得分:0)
这有点晚了!但是,在加载数据时,可以通过包含选项unpack=True
来修复有关解包太多值的错误消息,即
data = np.loadtxt("/home/***/****/***", unpack=True, usecols=(2, 3))