2013-10-04 1 views
2

두 개의 csv를 읽고 matplotlib.pyplot을 사용하여 플롯하고 동일한 두 개의 csv에 대해 다항식 회귀를 수행하는 코드 스 니펫이 있습니다. 내가 할 수 있기를 원하는 것은 데이터와 다항식 회귀를 같은 그래프에 표시하는 것입니다.실제 데이터와 같은 플롯에서 다항식 회귀를 플로팅

import matplotlib.pyplot as plt 
import csv 
import numpy as np 

datax=np.genfromtxt('Delta R.csv') 
datay=np.genfromtxt('Example R.csv') 


plt.title ('Test graph ') 
plt.xlabel('x axis') 
plt.ylabel('y axis ') 

plt.plot(datax, datay,'o-') 

plt.show() 

코드의 나의 두번째 조각은

import matplotlib.pyplot as plt 
import csv 
import numpy as np 

datax=np.genfromtxt('Delta R.csv') 
datay=np.genfromtxt('Example R.csv') 

z = np.polyfit(datax,datay,5) 

print z 

아무도 나를 원래의 데이터와 동일한 플롯에 회귀 polynomail이 5 차의 결과를 플롯 도와 드릴까요 단순히 다항식 회귀 수행한다. tcaswell에서 제공하는 감사 GTPE

편집

코드는 완벽하게 작동합니다. 내 유일한 질문은 다항식이 왜 그렇게 각성되어 나오는가하는 것입니다.

enter image description here

+0

직접 이미지를 허용하도록 Stackoverflow를 가져올 수 없습니다. – GTPE

답변

4

그냥 다시 plot 전화 : plot

datax=np.genfromtxt('Delta R.csv') 
datay=np.genfromtxt('Example R.csv') 

z = np.polyfit(datax,datay,5) 
p = np.poly1d(z) 

plt.title ('Test graph ') 
plt.xlabel('x axis') 
plt.ylabel('y axis ') 

plt.plot(datax, datay,'o-') 
plt.plot(datax, p(datax), '-') 

datax_os = np.linspace(np.min(datax), np.max(datax), 1024) 
plt.plot(datax_os, f(datax_os)) # 'smoother' line 

plt.show() 

여러 가지 인자를 사용하는 다른 방법이 np.polyfit 문서에서 볼 수 있습니다 여기 내 예제 이미지입니다.

+0

플롯 된 다항식에 대한 나의 유일한 질문은 왜 그것이 장소에서 너무 각진 것처럼 보입니까? 저는 다항식 피팅이 매끄 럽다는 가정하에있었습니다. 나는 아프다. 내 질문에 이미지를 추가한다. – GTPE

+1

@GTPE'plot'의 작동 방식은 점을 직선과 연결하는 것입니다. 보다 매끄러운 곡선을 원한다면 더 많은 점을 그립니다. – tacaswell

+0

오, 그렇습니다. 제공된 데이터의 회귀만을 보여줍니다. 다항식에 의해 정의 된 관계는 여전히 부드럽습니다. :) – GTPE

관련 문제