gpt4 book ai didi

python - 在数据框列上应用 curve_fit

转载 作者:行者123 更新时间:2023-12-01 04:34:57 24 4
gpt4 key购买 nike

我有一个包含多列的 pandas.DataFrame ,我想应用 curve_fit对他们每个人都有作用。我希望输出是一个数据框,其中具有适合列中数据的最佳值(目前,我对它们的协方差不感兴趣)。

df 具有以下结构:

    a  b  c
0 0 0 0
1 0 0 0
2 0 0 0
3 0 0 0
4 0 0 0
5 0 0 0
6 1 0 1
7 1 1 1
8 1 1 1
9 1 1 1
10 1 1 1
11 1 1 1
12 1 1 1
13 1 1 1
14 2 1 2
15 6 2 6
16 7 2 7
17 8 2 8
18 9 2 9
19 7 2 7

我定义了一个函数来适应数据,如下所示:

def sigmoid(x, a, x0, k):
y = a / (1 + np.exp(-k*(x-x0)))
return y

def fitdata(dataseries):
popt, pcov=curve_fit(sigmoid, dataseries.index, dataseries)
return popt

我可以应用该函数并获得一个数组作为返回:

result_a=fitdata(df['a'])
In []: result_a
Out[]: array([ 8.04197008, 14.48710063, 1.51668241])

如果我尝试df.apply该函数,我会收到以下错误:

fittings=df.apply(fitdata)
ValueError: Shape of passed values is (3, 3), indices imply (3, 20)

最终我希望输出如下:

           a          b          c
0 8.041970 2.366496 8.041970
1 14.487101 12.006009 14.487101
2 1.516682 0.282359 1.516682

这可以通过类似于apply的东西来完成吗? ?

最佳答案

希望我的解决方案适合您。

result = pd.DataFrame()
for i in df.columns:
frames = [result, pd.DataFrame(fitdata(df[i]))]
result = pd.concat(frames, axis=1)
result.columns = df.columns

a b c
0 8.041970 2.366496 8.041970
1 14.487101 12.006009 14.487101
2 1.516682 0.282359 1.516682

关于python - 在数据框列上应用 curve_fit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31867183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com