2017-09-26 41 views
0

我提供了一个数据集,我试图找到一些X和Y数据之间的关系。我希望能够使用sklearn库来绘制数据并预测/绘制公式的曲线。使用Sklearn to和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)时,花了大约一分钟。但后来,当我跑LinReg2.predict(polyREG.fit_transform(的Xgrid)),我得到了: “形状(1,5563251)和(1820,12)未对齐:5563251(昏暗1)= 1820(点心0)”。通过代码一些照看

编辑:

想必,你想在一个基本变量的12个观察训练,并且要满足一个四阶多项式变量,给你12点意见的5个导出变量(x^0,x^1,x^2,x^3,x^4),总共60个x值(12行,5个值)。然后,您需要预测x的106个新基准值,从而为您提供530个总x值(106行5个值)。然而,PolynomialFeatures认为你有1个观测106个变量,而不是1个变量的106个观测。由于交叉项,导出变量的数量是基数变量的多项式。代替的存在是106行的5个值的,存在是因为数中的值的第1行5563251个值,这不仅意味着评估这将需要一段时间,而且该线性拟合是要失败的,训练集的行数与预测集的行数不一样。

TL;博士变化(1,-1)至(-1,1)在重塑命令。

+0

我该如何去纠正它,所以我可以绘制预测曲线? – NoviceCoder