2017-10-16 4 views
0

多項式回帰を使用するコードを以下に書きました。モデルには合うが、予測できない!!多項式回帰を使用したモデルのフィッティングは、形状の問題のため予測できません

def polynomial_function(power=5, random_state=9): 
    global X_train 
    global y_train 

    X_train = X_train[['item_1','item_2','item_3','item_4']] 
    rng = np.random.RandomState(random_state) 
    poly = PolynomialFeatures(degree=power, include_bias=False) 
    linreg = LinearRegression(normalize=True) 
    new_X_train = poly.fit_transform(X_train) 
    linreg.fit(new_X_train, y_train) 
    new_x_test = np.array([4, 5, 6, 7]).reshape(1, -1) 
    print linreg.predict(new_x_test) 
    return linreg 

linreg = polynomial_function() 

は、エラーメッセージの下に取得しています:

ValueError: shapes (1,4) and (125,) not aligned: 4 (dim 1) != 125 (dim 0)  

エラーがここで起こる、

new_x_test = np.array([4, 5, 6, 7]).reshape(1, -1) 
print linreg.predict(new_x_test) 

をIはnew_X_train =(923、125) とnew_x_test =(の形状の形状を発見しました1、4)

これはどうやって重要ですか?

(1,4)の形を使用して予測しようとすると、アルゴリズムはそれを別の形に変換しようとしますか?

テストデータの次数5の多項式を見つけようとしていますか?

多項式回帰を学習しようとしていますが、誰でも何が起こっているのか説明できますか?

答えて

0
from sklearn.pipeline import Pipeline 
from sklearn.linear_model import LinearRegression 
from sklearn.preprocessing import PolynomialFeatures 

pipeline = Pipeline([ 
    ('poly', PolynomialFeatures(degree=5, include_bias=False)), 
    ('linreg', LinearRegression(normalize=True)) 
    ]) 

pipeline.fit(X_train, y_train) 
pipeline.predict(np.array([4, 5, 6, 7]).reshape(1, -1)) 
+0

実際にモデルを適合させた後、「linreg」を返しています。他の人はmodel = polynomial_function()を使って私のモデルを呼び出します。 model.predict(np.array([4、5、6、7])。reshape(1、-1));どのように私は私の機能でこれを処理できますか?これに対する解決策はありますか? –

+0

関数内に 'new_x_test'があるのはなぜですか?そして、あなたの目標は、モデルを返して予測するのが目的なら、あなたの関数の中で予測することをあなたの例に示すのはなぜですか? – Jarad

+0

私は簡単にするためにnew_x_testを入れました。私はその機能をテストしていた。私は "new_x_test"が関数の外にあるときに解決策を適用できると思った。しかし今はできません。 model.predict(np.array([4,5,6,7])。reshape(1、-1)) –

関連する問題