我怎么才能更适合这个?

2024-09-29 23:22:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我不太会用Python作图,所以请耐心听我说。我今天找了很多书,读了很多书,但是我想不出来。你知道吗

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.optimize import curve_fit

def exp_func(x,a,b,c):
    return a*np.exp(-b*x)+c

x = np.array(df_auction_cat['AgeAdj'])
y = np.array(df_auction_cat['SP/ABCost'])

plt.scatter(x, y, s=50, cmap='Blues', alpha=0.7, edgecolor='gray', linewidth=1)
popt, pcov = curve_fit(exp_func, x, y)
plt.plot(x, exp_func(x, *popt))

在前面的代码中,我处理了一些数据,并将df\u\u cat数据集放在一起。散点图是这样的,指数完全不符合:

enter image description here

任何帮助都将不胜感激。数据点如下:

AgeAdj SP/ABCost
26 0.051851813
8 0.342104363
28 0.142081738
23 0.1
22 0.056330527
19 0.157692308
18 0.157301407
17 0.15
17 0.236690872
17 0.173041737
14 0.223076923
12 0.247294549
12 0.242445636
10 0.464864865
17 0.233333333
17 0.253333333
10 0.292307692
28 0.126554024
19 0.322973634
14 0.270684988
18 0.174560858
12 0.203654335
23 0.133144882
17 0.119076601
12 0.381578947
17 0.232747811
14 0.365465999
11 0.574056541
19 0.153471963
29 0.128023925
15 0.164999835
28 0.140513444
22 0.089770069
16 0.16001412
15 0.283422611

Tags: 数据importdfasnppltarraysp
2条回答

好吧,我想出来了!我不知道你必须按升序排列x值。我还提供了这行代码的初步猜测:

popt, pcov = curve_fit(exp_func, x, y, p0=(0.7,0.1,1))

我试着在没有分类的情况下作图,看到了这个。我读到需要对值进行排序。 enter image description here

排序修复了问题: enter image description here

我创建了我自己的x,y和工作,你能发布你的输入数据吗?你知道吗

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from scipy.optimize import curve_fit

def exp_func(x,a,b,c):
    return a*np.exp(-b*x)+c

x = np.array(range(0,100))
y = np.array(exp_func(x,0.1,0.1,.1)*50+np.random.rand(100))

plt.scatter(x, y, s=50, cmap='Blues', alpha=0.7, edgecolor='gray', linewidth=1)
popt, pcov = curve_fit(exp_func,x, y)
plt.plot(x, exp_func(x, *popt))

相关问题 更多 >

    热门问题