首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用lmfit LognormalModel时的ValueError

使用lmfit LognormalModel时的ValueError
EN

Stack Overflow用户
提问于 2017-05-27 09:25:05
回答 1查看 107关注 0票数 0

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

下面是我的代码:

代码语言:javascript
复制
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()

错误输出为:

代码语言:javascript
复制
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
EN

回答 1

Stack Overflow用户

发布于 2017-05-27 20:26:04

首先,您显示的错误消息不可能来自您发布的代码。错误消息显示文件"Cs_curve_fit.py“的第17行内容为

代码语言:javascript
复制
pvout = pvmod.fit(y, amplitude= 1, center = 1, sigma =1 , x=x)

但这并不存在于您的代码中。请张贴实际代码和实际输出。

其次,这个问题的发生似乎是因为x的数据不能转换成一维的数值数组。不能信任您的代码或输出,我建议您自己将数据转换为1Dnumpy数组作为第一个测试。Lmfit应该能够处理Pandas系列,但它只对一维numpy数组执行简单的强制操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44212045

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档