生成した散布図で線形回帰を生成しようとしていますが、データはリスト形式であり、polyfit
を使用して見つけることができるすべての例はarange
を使用する必要があります。 arange
はリストを受け入れません。リストを配列に変換する方法について高低を検索しましたが、何も明らかではありません。何か不足していますか?
続いて、polyfit
への入力として整数のリストをどのように使用できますか?
以下は、私がフォローしているpolyfitの例です。
from pylab import *
x = arange(data)
y = arange(data)
m,b = polyfit(x, y, 1)
plot(x, y, 'yo', x, m*x+b, '--k')
show()
arange
generatesリスト(まあ、numpy配列);詳細については、help(np.arange)
と入力してください。既存のリストで呼び出す必要はありません。
>>> x = [1,2,3,4]
>>> y = [3,5,7,9]
>>>
>>> m,b = np.polyfit(x, y, 1)
>>> m
2.0000000000000009
>>> b
0.99999999999999833
ここで「m * x + b」とそれに相当するものを書き出すのではなく、ここでpoly1d
を使用する傾向があるため、コードのバージョンは次のようになります。
import numpy as np
import matplotlib.pyplot as plt
x = [1,2,3,4]
y = [3,5,7,10] # 10, not 9, so the fit isn't perfect
fit = np.polyfit(x,y,1)
fit_fn = np.poly1d(fit)
# fit_fn is now a function which takes in x and returns an estimate for y
plt.plot(x,y, 'yo', x, fit_fn(x), '--k')
plt.xlim(0, 5)
plt.ylim(0, 12)
このコード:
from scipy.stats import linregress
linregress(x,y) #x and y are arrays or lists.
次のリストを提供します。
勾配:フロート
回帰直線の勾配
intercept:float
回帰直線の切片
r-value:float
相関係数
p-value:float
傾きがゼロであるという帰無仮説を持つ仮説検定の両側p値
stderr:フロート
推定の標準誤差
import numpy as np
import matplotlib.pyplot as plt
from scipy import stats
x = np.array([1.5,2,2.5,3,3.5,4,4.5,5,5.5,6])
y = np.array([10.35,12.3,13,14.0,16,17,18.2,20,20.7,22.5])
gradient, intercept, r_value, p_value, std_err = stats.linregress(x,y)
mn=np.min(x)
mx=np.max(x)
x1=np.linspace(mn,mx,500)
y1=gradient*x1+intercept
plt.plot(x,y,'ob')
plt.plot(x1,y1,'-r')
plt.show()
これを使用してください..
from pylab import *
import numpy as np
x1 = arange(data) #for example this is a list
y1 = arange(data) #for example this is a list
x=np.array(x) #this will convert a list in to an array
y=np.array(y)
m,b = polyfit(x, y, 1)
plot(x, y, 'yo', x, m*x+b, '--k')
show()
別の迅速で汚い答えは、リストを配列に変換するだけです:
import numpy as np
arr = np.asarray(listname)