2016-09-07 5 views
0

私は、いくつかの機能を備えた単純な線形回帰モデルを構築しました。新しい入力を予測しようとすると、出力に矛盾が生じます。scikit-learnにおける線形回帰モデルの予測は矛盾しています

In [1]: model.predict(X_new) 
Out[1]: array([ 7.15993216e+08, 1.13548305e+09]) 

しかし、私は、元の学習サンプルにそれをタックた場合、私は非常に異なる答えを得る:例えば

In [2]: model.predict(X_training[:1].append(X_new))[1:] 
Out[2]: array([ 272682.59925699, 1179906.89475647]) 

これは(少なくとも線形回帰以内)に依存しないモデルのようです。私もパイプラインの内部を同じように試して、サムの動作を得ました。

どのような考えですか?

+0

「X_training」の種類は正確には何ですか?通常、そこに 'np.array'オブジェクトを渡しますが、' append'メソッドはありません。 –

+0

これはパンダのデータフレームですが、numpyの配列と同じ問題です。 – user6656013

+0

@SohierDane、私は実際にはX_trainingの最初の値を引っ張ってから、予測結果から、最初の値以外のすべてを引っ張っています(トレーニング値の予測が表示されないようにします)。私が思うのと同じ出力でなければならない。 – user6656013

答えて

0

これは、パンダのデータフレームのソート順に問題があるようです。これに対する解決策は、トレーニングとテストの両方のデータセットを同じ列順であらかじめソートすることです。

model.fit(np.array(X_training.sort_index(1))) 
model.predict(np.array(new_input.sort_index(1))) 

これは、トレーニングおよびテストアレイの列の順序を示しています。

関連する問題