2013-10-04 8 views
6

私は、Pythonとそのすべてのライブラリの初心者です。しかし、私は意図したとおりに動作する小さなプログラムを作ることができました。 これは文字列を取り、異なる文字の出現を数えてグラフにプロットし、式とその曲線を適用します。 これで、フィットのr乗値を取得したいと思います。curve_fitを使用してr-squared値を取得する

全体的な考え方は、さまざまなレベルの記事からさまざまな種類のテキストを比較し、全体のパターンがどれほど強いかを確認することです。

わかりやすいだけでわかりやすく、わかりやすい回答が素晴らしいと思います。

コードは次のとおり

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() 

答えて

15

コンピュr_squaredr_squaredmean)を意味使用して求めることができる

、正方形の総和ss_tot残余平方和ss_res)である。それぞれは以下のように定義される:f_ix_iにおける関数値が

mean

SStot

SSres

rsquared

Wikipediaから取られます。scipy.optimize.curve_fit()から

  • はあなたが正方形の残差の合計を取得することができます

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

  • curve_fit()からパラメータ(popt)を取得することができます(ss_tot

    • residuals = ydata- f(xdata, popt)
    • ss_res = numpy.sum(residuals**2)
  • あなたは

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

  • そして最後に、r_squared - 値を持つと正方形(ss_tot)の総和を得ることができ、

    r_squared = 1 - (ss_res/ss_tot)

+0

OFC!鮮やかな答え。なんらかの理由で、私はそれを直接計算することは考えていませんでした。ありがとう。 – Mathias

関連する問題