Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用lmfit LognormalModel时出现ValueError_Python_Lmfit - Fatal编程技术网

Python 使用lmfit LognormalModel时出现ValueError

Python 使用lmfit LognormalModel时出现ValueError,python,lmfit,Python,Lmfit,我已经使用lmfit大约一天了,不用说我对图书馆知之甚少。我一直在使用几个内置模型进行曲线拟合,除了对数正态模型外,所有这些模型都能完美地处理数据 这是我的密码: from numpy import * from lmfit.models import LognormalModel import pandas as pd import scipy.integrate as integrate import matplotlib.pyplot as plt data = pd.read_csv

我已经使用lmfit大约一天了,不用说我对图书馆知之甚少。我一直在使用几个内置模型进行曲线拟合,除了对数正态模型外,所有这些模型都能完美地处理数据

这是我的密码:

from numpy import *
from lmfit.models import LognormalModel
import pandas as pd
import scipy.integrate as integrate

import matplotlib.pyplot as plt

data = pd.read_csv('./data.csv', delimiter = ",")
x = data.ix[:, 0]
y = data.ix[:, 1]

print (x)
print (y)

mod = LognormalModel()
pars = mod.guess(y, x=x)
out = mod.fit(y, pars , x=x)
print(out.best_values)
print(out.fit_report(min_correl=0.25))
out.plot()

plt.plot(x, y,         'bo')
plt.plot(x, out.init_fit, 'k--')
plt.plot(x, out.best_fit, 'r-')
plt.show()
错误输出为:

Traceback (most recent call last):
  File "Cs_curve_fit.py", line 17, in <module>
    pvout = pvmod.fit(y, amplitude= 1, center = 1, sigma =1 , x=x)
  File "C:\Users\NAME\Anaconda3\lib\site-packages\lmfit\model.py", line 731, in fit
    output.fit(data=data, weights=weights)
  File "C:\Users\NAME\Anaconda3\lib\site-packages\lmfit\model.py", line 944, in fit
    self.init_fit = self.model.eval(params=self.params, **self.userkws)
  File "C:\Users\NAME\Anaconda3\lib\site-packages\lmfit\model.py", line 569, in eval
    return self.func(**self.make_funcargs(params, kwargs))
  File "C:\Users\NAME\Anaconda3\lib\site-packages\lmfit\lineshapes.py", line 162, in lognormal
    x[where(x <= 1.e-19)] = 1.e-19
  File "C:\Users\NAME\Anaconda3\lib\site-packages\pandas\core\series.py", line 773, in __setitem__
    setitem(key, value)
  File "C:\Users\NAME\Anaconda3\lib\site-packages\pandas\core\series.py", line 755, in setitem
    raise ValueError("Can only tuple-index with a MultiIndex")
ValueError: Can only tuple-index with a MultiIndex
回溯(最近一次呼叫最后一次):
文件“Cs_curve_fit.py”,第17行,在
pvout=pvmod.fit(y,振幅=1,中心=1,σ=1,x=x)
文件“C:\Users\NAME\Anaconda3\lib\site packages\lmfit\model.py”,第731行,在fit中
拟合(数据=数据,权重=权重)
文件“C:\Users\NAME\Anaconda3\lib\site packages\lmfit\model.py”,第944行,在fit中
self.init_fit=self.model.eval(params=self.params,**self.userkws)
文件“C:\Users\NAME\Anaconda3\lib\site packages\lmfit\model.py”,第569行,在eval中
返回self.func(**self.make_funcargs(params,kwargs))
文件“C:\Users\NAME\Anaconda3\lib\site packages\lmfit\lineshapes.py”,第162行,在lognormal中

x[其中(x首先,您显示的错误消息不可能来自您发布的代码。错误消息表示文件“Cs_curve_fit.py”的第17行读取

但这不是你的代码中的任何地方。请发布实际代码和实际输出

其次,问题似乎发生了,因为无法将
x
的数据转换为1D numpy数组。由于无法信任您的代码或输出,我建议您自己将数据转换为1D numpy数组作为第一个测试。Lmfit应该能够处理Pandas系列,但它只是对1D numpy a执行简单的强制操作拉雷斯

pvout = pvmod.fit(y, amplitude= 1, center = 1, sigma =1 , x=x)