Saya mencoba membuat regresi linier pada plot pencar yang telah saya buat, namun data saya dalam format daftar, dan semua contoh yang dapat saya temukan tentang penggunaan polyfit
memerlukan penggunaan arange
. arange
tidak menerima daftar. Saya telah mencari tinggi dan rendah tentang cara mengonversi daftar ke array dan tidak ada yang tampak jelas. Apakah saya melewatkan sesuatu?
Selanjutnya, bagaimana cara terbaik menggunakan daftar bilangan bulat saya sebagai input ke polyfit
?
berikut adalah contoh polyfit yang saya ikuti:
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()
python
numpy
matplotlib
linear-regression
curve-fitting
Siddhant Saraf
sumber
sumber
regplot
dariseaborn
: stackoverflow.com/a/42263217/911945Jawaban:
arange
menghasilkan daftar (baik, array numpy); ketikhelp(np.arange)
untuk detailnya. Anda tidak perlu menyebutnya di daftar yang ada.>>> x = [1,2,3,4] >>> y = [3,5,7,9] >>> >>> m,b = np.polyfit(x, y, 1) >>> m 2.0000000000000009 >>> b 0.99999999999999833
Saya harus menambahkan bahwa saya cenderung menggunakan di
poly1d
sini daripada menulis "m * x + b" dan ekuivalen tingkat tinggi, jadi versi kode saya akan terlihat seperti ini: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 coef = np.polyfit(x,y,1) poly1d_fn = np.poly1d(coef) # poly1d_fn is now a function which takes in x and returns an estimate for y plt.plot(x,y, 'yo', x, poly1d_fn(x), '--k') plt.xlim(0, 5) plt.ylim(0, 12)
sumber
Kode ini:
from scipy.stats import linregress linregress(x,y) #x and y are arrays or lists.
memberikan daftar sebagai berikut:
Sumber
sumber
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()
Gunakan ini ..
sumber
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()
sumber
Jawaban cepat dan kotor lainnya adalah Anda bisa mengonversi daftar Anda menjadi array menggunakan:
import numpy as np arr = np.asarray(listname)
sumber