web-dev-qa-db-ja.com

statsmodelsを使用したOLSモデルを使用した値の予測

OLS(多重線形回帰)を使用してモデルを計算しました。データを分割してトレーニングとテストを行い(それぞれ半分)、次にラベルの後半の値を予測したいと思います。

model = OLS(labels[:half], data[:half])
predictions = model.predict(data[half:])

問題は、次のエラーが発生することです。ファイル "/usr/local/lib/python2.7/dist-packages/statsmodels-0.5.0-py2.7-linux-i686.Egg/statsmodels/regression/linear_model.py" 、281行目、predict return np.dot(exog、params)ValueError:行列が整列されていません

次の配列形状があります:data.shape:(426、215)labels.shape:(426、)

入力をmodel.predictに転置すると、結果は得られますが、形状は(426,213)なので、それも間違っていると思います(ラベル予測として213個の数値の1つのベクトルを期待します)。

model.predict(data[half:].T)

それを機能させる方法はありますか?

11
nickb

Statsmodels> = 0.4の場合、正しく覚えていれば

model.predictはパラメーターについて知らないため、呼び出しでパラメーターを要求します。 http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.OLS.predict.html

この場合に機能するのは、モデルを適合させてから、結果インスタンスの予測メソッドを使用することです。

model = OLS(labels[:half], data[:half])
results = model.fit()
predictions = results.predict(data[half:])

以下

results = OLS(labels[:half], data[:half]).fit()
predictions = results.predict(data[half:])

http://statsmodels.sourceforge.net/stable/generated/statsmodels.regression.linear_model.RegressionResults.predict.html docstringがありません

注:これは開発バージョン(下位互換性)で変更されており、predict http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model。)で「式」情報を利用できます。 RegressionResults.predict.html

16
Josef