当我试图找到最适合我的数据时,我遇到了问题。使用scipy.optimize.curve_fit创建最佳拟合。我的数据和代码是:
编辑您可以从这里下载数据文件。数据是,
a b b2
55478 1.07E+43 54395.93833
56333 1.63E+43 54380.01385
57540 2.57E+43 52393.31605
61866 7.32E+43 52212.22838 52212.22838
代码:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from __future__ import division
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import fit
import glob
import os
from scipy.optimize import curve_fit
import matplotlib.patches as patches
pf = pd.read_csv('/home/imhotep/Desktop/lala.csv', sep=',', encoding ='utf-8')
a1= pf['a'].max()
b1 = pf['b2'].max()
npoc=100
x = np.linspace((b1), (pf['b'].max()),npoc)
yy = np.linspace((pf['a'].min()), (pf['a'].max()), npoc)
fig = plt.figure()
ax4 = fig.add_subplot(111)
def h(x,k):
return a1* (((x-(b1))/(k))**(-(5./3.)))
popt,pcov = curve_fit(h,x,yy)
print 'POPT,', popt,'PCOV',pcov
y_fi1 = h(x, *popt)
ax4.plot(x, y_fi1, label='fit', ls='-', color='blue')
ax4.plot(pf['b'], pf['a'], ls='None', color='blue', marker='o')
plt.show()
但是,大致应该是这样的:
谁能告诉我哪里出错了?我是曲线拟合的初学者。