2017-05-27 29 views
0

私は約1日でlmfitを使用していますが、ライブラリについてはほとんど知りません。私はカーブフィッティングのためにいくつかのビルトインモデルを使用していて、それらのすべては対数正規モデル以外のデータと完璧に動作します。lmfitを使用したときのValueError LognormalModel

は、ここに私のコードです:

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 

答えて

0

まず、あなたが表示されたエラーメッセージは、あなたが投稿したコードから来ていることはできません。エラーメッセージがファイル「Cs_curve_fit.py」のライン17は

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

を読み取りますが、それはあなたのコード内の任意の場所にないことを言います。実際のコードと実際の出力を掲載してください。

第2に、xのデータを1D numpy配列にすることができないため、問題が発生しています。あなたのコードや出力を信頼することができない、私はちょうど最初のテストとして1D numpy配列にデータを変換することをお勧めします。 LmfitはPandasシリーズを扱うことができるはずですが、1D numpy配列に簡単に変換します。

関連する問題