2017-09-26 9 views
0

데이터 세트가 제공되었으므로 일부 X 및 Y 데이터 사이의 관계를 찾으려고합니다. sklearn 라이브러리를 사용하여 데이터를 플롯하고 eqn의 곡선을 예측/예측할 ​​수 있기를 원합니다.Sklearn to and Polynomial Regression을 사용하여 곡선의 방정식을 맞추거나 예측하십시오. 무한 루프 오류

그러나 내 데이터 집합에 다항식 회귀 모델을 적용한 후 예상 값을 플로팅하려 할 때 코드가 무한 루프에 멈추었습니다.

최종 목표는 일단 곡선을 예측/계획하면 곡선의 전체 방정식이 무엇인지 알 수 있기를 원합니다.

여기 내 코드가 있습니다.

import numpy as np 
import matplotlib.pyplot as plt 
import pandas as pd 
Dataset = pd.DataFrame() 
Dataset["X"] = [6377, 6378, 6379, 6380, 6381, 6382, 6383, 6385, 6387, 6392, 6397, 6402] 
Dataset["Y"] = [1.225, 1.112, 1.007, 0.9093, 0.8194, 0.7364, 0.6601, 0.5258, 0.4135, 0.1948, 0.08891, 0.04008] 

print(Dataset) 

X = np.reshape(np.array(Dataset['X']), (1, -1)) 
Y = np.reshape(np.array(Dataset['Y']), (1, -1)) 

print(X) 
print(Y) 

from sklearn.linear_model import LinearRegression 

linReg = LinearRegression() 
linReg.fit(X, Y) 

plt.scatter(X, Y, color='red') 
# plt.plot(X,linReg.predict(X), color = 'blue') 

from sklearn.preprocessing import PolynomialFeatures 

polyREG = PolynomialFeatures(degree=4) 

xPoly = polyREG.fit_transform(X) 

LinReg2 = LinearRegression() 
LinReg2.fit(xPoly, Y) 
# 
# try: 
#  xgrid = np.arange(min(X), max(X), .1) 
# except Exception as e: 
#  print(e) 

# xgrid = range(6377, 6403, 1) 
# xgrid = np.asarray(xgrid) 
# print(xgrid.shape) 
# xgrid = np.reshape(xgrid, (1,-1)) 

xgrid = np.reshape(np.arange(6300, 6405, 1), (1,-1)) 
print(xgrid.shape) 
#X = np.reshape(np.array(Dataset['X']), (1, -1)) 
#plt.plot(xg, 1, color = "blue") 
try: 
    plt.plot(xgrid, LinReg2.predict(polyREG.fit_transform(xgrid)), color='blue') 
except Exception as e: 
    print(e) 
plt.show() 

답변

-1

이것은 무한 루프가 아니며 단지 시간이 걸립니다. polyREG.fit_transform (xgrid)을 실행할 때 약 1 분이 걸렸습니다. 그런데 LinReg2.predict (polyREG.fit_transform (xgrid))를 실행했을 때 "모양 (1,5563251)과 (1820,12)가 정렬되지 않았습니다. 5563251 (희미한 1)! = 1820 (희미한 0)".

편집 코드를 좀 더를 통해보고 후 : 아마도

, 당신에게 12 개 관찰을주는 하나 개의 기본 변수의 12 명 관찰 훈련을 위해 노력하고, 당신은 그 변수에 4 차 다항식에 맞게 원하는 총 60 개의 x 값 (5 개의 값 중 12 개의 행)에 대해 5 개의 파생 변수 (x^0, x^1, x^2, x^3, x^4) 그런 다음 106 개의 새로운 x 값을 예측하여 530 개의 총 x 값 (106 개의 5 개 값)을 제공합니다. 그러나 PolynomialFeatures는 1 변수에 대한 106 가지 관측보다는 106 가지 변수에 대한 1 가지 관찰을한다고 생각합니다. 교차 항으로 인해 파생 변수의 수는 기본 변수의 수에 다항식입니다. 5 개의 값으로 구성된 106 개의 행 대신에 1 행의 5563251 값이 있습니다.이 값을 평가하는 데는 시간이 걸릴뿐 아니라 선형 피팅이 실패하게됩니다. 트레이닝 세트 행은 예측 세트 행의 값의 수와 동일하지 않다.

tl; 변경 명령에서 dr change (1, -1) ~ (-1, 1).

+0

예상되는 곡선을 그리기 위해 어떻게 수정해야합니까? – NoviceCoder