pythonのpredict関数のエラーが調べてもよくわからないのですが、
どなたか解消の方法がわかれば教えていただけますか。
以下の重回帰分析により、1~135週までの取引データを使ってモデルを作成し、
Python
1ary_x = np.array(train_query_x) 2ary_x = sm.add_constant(ary_x) 3ary_y = np.array(train_query_y) 4model = sm.OLS(ary_y, ary_x) 5result = model.fit() 6result.summary()
上記で出来上がったモデルresultを使って、
136週から145週までのnum_orders(オーダー数)を予測するというものです。
よって、
目的変数:num_orders
説明変数:num_orders以外の変数(列名)
ということになります。
(データフレームは一番下に冒頭の5行を記載しています。)
python
1 2# 1~145週まであるデータフレームから予測したい136週から145週を抽出 3train_query_demand = train_dummy[136:145] 4train_query_demand 5 6#説明変数だけのデータフレーム(num_ordersを除いたもの)に整理 7train_query_demand_x = train_query_demand[['checkout_price', 'base_price', 'emailer_for_promotion',\ 8 'homepage_featured', 'op_area', 'TYPE_B', 'TYPE_C',\ 9 'Biryani', 'Desert', 'Extras', 'Fish', 'Other Snacks', 'Pasta', 'Pizza',\ 10 'Rice Bowl', 'Salad', 'Sandwich', 'Seafood', 'Soup', 'Starters',\ 11 'Indian', 'Italian', 'Thai']] 12train_query_demand_x 13 14# 得られたモデルresultからpredict関するを使って予測する 135週から145週のnum_orders予測 15df_pred_y = pd.DataFrame(result.predict(sm.add_constant(train_query_demand_x)), columns=['num_orders']) 16df_pred_y 17
以下はエラーのコードと画面です。
python
1--------------------------------------------------------------------------- 2ValueError Traceback (most recent call last) 3<ipython-input-310-d3bd08443293> in <module>() 4 1 # 得られたモデルから予測する 135週から145週の売上数量予測 5----> 2 df_pred_y = pd.DataFrame(result.predict(sm.add_constant(train_query_demand_x)), columns=['num_orders']) 6 3 df_pred_y 7 81 frames 9/usr/local/lib/python3.7/dist-packages/statsmodels/regression/linear_model.py in predict(self, params, exog) 10 362 exog = self.exog 11 363 12--> 364 return np.dot(exog, params) 13 365 14 366 def get_distribution(self, params, scale, exog=None, dist_class=None): 15 16<__array_function__ internals> in dot(*args, **kwargs) 17 18ValueError: shapes (9,23) and (24,) not aligned: 23 (dim 1) != 24 (dim 0) 19
<使っているデータフレーム>
以下のデータフレームが、weekが1~145行まであり、1~135行目までは、num_ordersの数値があり
136~145行までは、num_ordersの数値がなく、この数値をpredictを使って予測したいのですが、上記エラーが出てしまいます。
(表の記述の仕方がわからず、見にくいかもしれずすみません。)
python
1 2week checkout_price base_price emailer_for_promotion homepage_featured num_orders op_area TYPE_B TYPE_C Biryani Desert Extras Fish Other Snacks Pasta Pizza Rice Bowl Salad Sandwich Seafood Soup Starters Indian Italian Thai 31 965809.26 1018365.32 357 414 792261 4.079876797 602 643 175 210 94 0 198 212 231 231 0 230 166 79 209 820 673 811 42 938092.43 1005779.2 621 514 787084 4.085013812 602 625 159 203 93 0 196 209 230 230 0 229 168 82 211 795 668 813 53 948560.28 1008352.05 104 316 695262 4.078682304 596 635 167 201 93 0 199 210 227 231 0 230 167 82 208 800 671 812 64 953833.69 1006446.9 0 292 743529 4.087746625 589 618 155 204 96 0 199 193 230 231 0 230 170 85 214 789 654 825 75 901141.58 1001075.16 337 466 1198675 4.077824414 548 642 154 207 95 0 195 190 222 228 0 227 189 79 209 780 645 803 8 9 10