gpt4 book ai didi

python - 使用 curve_fit 获取 r 平方值

转载 作者:太空狗 更新时间:2023-10-29 17:36:06 25 4
gpt4 key购买 nike

我是 Python 及其所有库的初学者。但是我设法制作了一个按预期工作的小程序。它需要一个字符串,计算不同字母的出现次数并将它们绘制在图表中,然后应用方程及其曲线。¨现在我想获得拟合的 r 平方值。

总体思路是比较不同级别文章中不同种类的文本,看看整体模式有多强。

只是一个练习,我是新手,所以一个易于理解的答案会很棒。

代码是:

import numpy as np
import math
import matplotlib.pyplot as plt
from matplotlib.pylab import figure, show
from scipy.optimize import curve_fit

s="""det, og deres undersøgelse af hvor meget det bliver brugt viser, at der kun er seks plugins, som benyttes af mere end 5 % af Chrome-brugere.
Problemet med teknologien er, at den ivivuilv rduyd iytf ouyf ouy yg oyuf yd iyt erzypu zhrpyh dfgopaehr poargi ah pargoh ertao gehorg aeophgrpaoghraprbpaenbtibaeriber en af hovedårsagerne til sikkerhedshuller, ustabilitet og deciderede nedbrud af browseren.
Der vil ikke bve lukket for API'et ivivuilv rduyd iytf ouyf ouy yg oyuf yd iyt erzypu zhrpyh dfgopaehr poargi ah pargoh ertao gehorg aeophgrpaoghraprbpaenbtibaeriber en af hovedårsagerne til sikkerhedshuller, ustabilitet og deciderede nedbrud af browseren.
Der vil ikke blive lukket for API'et på én gang, men det vil blive udfaset i løbet af et års tid. De mest populære plugins får lov at fungere i udfasningsperioden; Det drejer sig om: Silverlight (anvendt af 15 % af Chrome-brugere sidste måned), Unity (9,1 %), Google Earth (9,1 %), Java (8,9%), Google Talk (8,7 %) og Facebook Video (6,0 %).
Det er muligt at hvidliste andre plugins, men i slutningen af 2014 forventer udviklerne helt at lukke for brugen af dem."""
fordel=[]
alf=['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','æ','ø','å']
i=1
p=0
fig = figure()
ax1 = fig.add_subplot(1,2,0)
for i in range(len(alf)):
fordel.append(s.count(alf[i]))
i=i+1
fordel=sorted(fordel,key=int,reverse=True)
yFit=fordel
xFit=[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]
def func(x, a, b):
return a * (b ** x)
popt, pcov = curve_fit(func, xFit, yFit)
t = np.arange(0.0, 30.0, 0.1)
a=popt[0]
b=popt[1]
s = (a*b**t)
ax1.plot(t,s)
print(popt)
yMax=math.ceil(fordel[0]+5)
ax1.axis([0,30,0,yMax])
for i in range(0,int(len(alf))*2,2):
fordel.insert(i,p)
p=p+1
for i in range(0,int(len(fordel)/2)):
ax1.scatter(fordel[0],fordel[1])
fordel.pop(0)
fordel.pop(0)
plt.show()
show()

最佳答案

计算 r_squared :

r_squared可以使用均值(mean)、总平方和(ss_tot)和残差平方和 ( ss_res )。每个定义为:

mean

SStot

SSres

rsquared

哪里 f_i是点 x_i 处的函数值.取自Wikipedia .

来自scipy.optimize.curve_fit():

  • 您可以使用 curve_fit() 获取参数 (popt)

    popt, pcov = curve_fit(f, xdata, ydata)

  • 您可以通过以下方式获得残差平方和 ( ss_tot )

    • residuals = ydata- f(xdata, *popt)
    • ss_res = numpy.sum(残差**2)
  • 您可以通过以下方式获得总平方和 ( ss_tot )

    ss_tot = numpy.sum((ydata-numpy.mean(ydata))**2)

  • 最后,r_squared -值(value),

    r_squared = 1 - (ss_res/ss_tot)

关于python - 使用 curve_fit 获取 r 平方值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19189362/

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