Program Tip

matplotlib / numpy를 사용한 선형 회귀

programtip 2020. 10. 20. 08:05
반응형

matplotlib / numpy를 사용한 선형 회귀


나는 목록 형식으로하지만, 내가 생성 한 산포도에 선형 회귀를 생성하기 위해 내 데이터를하려고하고, 내가 사용하는 찾을 수있는 모든 예제있어 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 목록을 생성 합니다 (잘, 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

poly1d"m * x + b"와 고차 동등 항목을 작성하는 대신 여기 에서 사용하는 경향이 있으므로 코드의 내 버전은 다음과 같습니다.

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.

다음과 같은 목록을 제공합니다.

기울기 :
회귀선의 부동 기울기
절편 : 회귀선의 부동
절편
r- 값 : 부동
상관 계수
p- 값 :
귀무 가설이 기울기가 0이라는 가설 검정을위한 부동 양측 p- 값
stderr : float
추정치의 표준 오차

출처


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

이 .. 사용


또 다른 빠르고 더러운 대답은 다음을 사용하여 목록을 배열로 변환 할 수 있다는 것입니다.

import numpy as np
arr = np.asarray(listname)

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

참고 URL : https://stackoverflow.com/questions/6148207/linear-regression-with-matplotlib-numpy

반응형