[python] 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

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)

여기에 이미지 설명 입력


답변

이 코드 :

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

이 .. 사용


답변

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)


답변