2017-09-26 10 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(dim 1)!= 1820(dim 0)」というメッセージが表示されます。コードのいくつかのより多くのを見た後に

編集:

おそらく、あなたは一つの基本変数の12の観測に訓練しようとしている、とあなたがその変数に第四次多項式にフィットするようにしたい、あなたに12回の観測を与えます(x^0、x^1、x^2、x^3、x^4)の合計60個のx値(5行の12行)に対して、次に、xの新しい106個の基本値を予測し、530個の合計x値(5行の106行)を予測したいとします。しかし、PolynomialFeaturesは、1変数を106回観測するのではなく、106変数を1回観測すると考えています。交差項のために、導出された変数の数は、基本変数の数の多項式である。 5つの値の106行ではなく、1行の5563251の値があります。これは、これを評価するのに時間がかかるだけでなく、線形近似が失敗することを意味します。トレーニングセットの行は、予測セットの行の値の数と同じではありません。

tl; reshapeコマンドでdr change(1、-1)〜(-1、1)。

+0

予測カーブをプロットできるように修正するにはどうすればよいですか? – NoviceCoder

関連する問題