26

私は Python とそのすべてのライブラリの両方の初心者です。しかし、意図したとおりに機能する小さなプログラムを作成することができました。文字列を受け取り、さまざまな文字の出現を数えてグラフにプロットし、方程式とその曲線を適用します。

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

単なる演習であり、私は新しいので、わかりやすい答えは素晴らしいでしょう.

コードは次のとおりです。

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

3 に答える 3

82

コンピューティングr_squared:

r_squared値は、平均( ) 平均総平方和( ss_tot)、残差平方和( ) を使用して求めることができますss_res。それぞれは次のように定義されます。

平均

Sスタート

SSres

二乗

ここf_iで、 はポイント での関数値ですx_iウィキペディアから引用。

からscipy.optimize.curve_fit():

  • からパラメータ(poptcurve_fit()を取得できます

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

  • 残差二乗和( ss_tot) を取得できます

    • residuals = ydata- f(xdata, *popt)
    • ss_res = numpy.sum(residuals**2)
  • 二乗和( ss_tot)は次のように取得できます。

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

  • そして最後に、 - のr_squared値は、

    r_squared = 1 - (ss_res / ss_tot)

于 2016-06-18T17:33:13.580 に答える