14

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)

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

4

2 に答える 2

19

私の記憶が正しければ、statsmodels >=0.4 の場合

model.predictパラメータについて知らず、呼び出しでそれらを必要とします

あなたのケースでうまくいくのは、モデルを適合させてから、結果インスタンスの予測メソッドを使用することです。

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 が欠落している

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

于 2012-11-04T13:23:20.407 に答える