質問編集履歴

3

全体的に整理し、情報を追加いたしました。

2021/10/24 16:59

投稿

Shin_go
Shin_go

スコア19

test CHANGED
File without changes
test CHANGED
@@ -4,39 +4,125 @@
4
4
 
5
5
 
6
6
 
7
- 以下の重回帰分析によりモデルを作成し、
7
+ 以下の重回帰分析により、1~135週までの取引データを使ってモデルを作成し、
8
+
9
+
8
10
 
9
11
 
10
12
 
11
13
  ```Python
12
14
 
13
- from statsmodels import api as sm
14
-
15
- import numpy as np
16
-
17
-
18
-
19
- X = train_query.loc[:,columnList]
20
-
21
- y = train_query.loc[:,['num_orders']]
22
-
23
-
24
-
25
- ary_x = np.array(X)
15
+ ary_x = np.array(train_query_x)
26
16
 
27
17
  ary_x = sm.add_constant(ary_x)
28
18
 
29
- ary_y = np.array(y)
19
+ ary_y = np.array(train_query_y)
30
-
31
-
32
20
 
33
21
  model = sm.OLS(ary_y, ary_x)
34
-
35
-
36
22
 
37
23
  result = model.fit()
38
24
 
39
25
  result.summary()
26
+
27
+ ```
28
+
29
+
30
+
31
+ 上記で出来上がったモデルresultを使って、
32
+
33
+ 136週から145週までのnum_orders(オーダー数)を予測するというものです。
34
+
35
+ よって、
36
+
37
+ 目的変数:num_orders
38
+
39
+ 説明変数:num_orders以外の変数(列名)
40
+
41
+ ということになります。
42
+
43
+ (データフレームは一番下に冒頭の5行を記載しています。)
44
+
45
+
46
+
47
+ ```python
48
+
49
+
50
+
51
+ # 1~145週まであるデータフレームから予測したい136週から145週を抽出
52
+
53
+ train_query_demand = train_dummy[136:145]
54
+
55
+ train_query_demand
56
+
57
+
58
+
59
+ #説明変数だけのデータフレーム(num_ordersを除いたもの)に整理
60
+
61
+ train_query_demand_x = train_query_demand[['checkout_price', 'base_price', 'emailer_for_promotion',\
62
+
63
+ 'homepage_featured', 'op_area', 'TYPE_B', 'TYPE_C',\
64
+
65
+ 'Biryani', 'Desert', 'Extras', 'Fish', 'Other Snacks', 'Pasta', 'Pizza',\
66
+
67
+ 'Rice Bowl', 'Salad', 'Sandwich', 'Seafood', 'Soup', 'Starters',\
68
+
69
+ 'Indian', 'Italian', 'Thai']]
70
+
71
+ train_query_demand_x
72
+
73
+
74
+
75
+ # 得られたモデルresultからpredict関するを使って予測する 135週から145週のnum_orders予測
76
+
77
+ df_pred_y = pd.DataFrame(result.predict(sm.add_constant(train_query_demand_x)), columns=['num_orders'])
78
+
79
+ df_pred_y
80
+
81
+
82
+
83
+ ```
84
+
85
+ 以下はエラーのコードと画面です。
86
+
87
+
88
+
89
+ ```python
90
+
91
+ ---------------------------------------------------------------------------
92
+
93
+ ValueError Traceback (most recent call last)
94
+
95
+ <ipython-input-310-d3bd08443293> in <module>()
96
+
97
+ 1 # 得られたモデルから予測する 135週から145週の売上数量予測
98
+
99
+ ----> 2 df_pred_y = pd.DataFrame(result.predict(sm.add_constant(train_query_demand_x)), columns=['num_orders'])
100
+
101
+ 3 df_pred_y
102
+
103
+
104
+
105
+ 1 frames
106
+
107
+ /usr/local/lib/python3.7/dist-packages/statsmodels/regression/linear_model.py in predict(self, params, exog)
108
+
109
+ 362 exog = self.exog
110
+
111
+ 363
112
+
113
+ --> 364 return np.dot(exog, params)
114
+
115
+ 365
116
+
117
+ 366 def get_distribution(self, params, scale, exog=None, dist_class=None):
118
+
119
+
120
+
121
+ <__array_function__ internals> in dot(*args, **kwargs)
122
+
123
+
124
+
125
+ ValueError: shapes (9,23) and (24,) not aligned: 23 (dim 1) != 24 (dim 0)
40
126
 
41
127
 
42
128
 
@@ -44,25 +130,31 @@
44
130
 
45
131
 
46
132
 
47
- 上記で出来上がったモデルresultを使って
133
+ 使っているデータフレーム>
48
134
 
135
+ 以下のデータフレームが、weekが1~145行まであり、1~135行目までは、num_ordersの数値があり
136
+
137
+ 136~145行までは、num_ordersの数値がなく、この数値をpredictを使って予測したいのですが、上記エラーが出てしまいます。
138
+
49
- num_ordersオーダー数)を予測するとのです。
139
+ 表の記述の仕方がわからず、見にくしれずみません
50
140
 
51
141
 
52
142
 
53
- ```Python
143
+ ```python
54
-
55
- pred_y = pd.DataFrame(result.predict(sm.add_constant(train_query_test)), columns=['num_orders'])
56
-
57
- pred_y
58
-
59
- ```
60
144
 
61
145
 
62
146
 
63
- train_query_testは、下記のようなデータフレームです。この変数から、num_oredersを予測したいのですが、
147
+ week 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
64
148
 
149
+ 1 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
150
+
151
+ 2 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
152
+
153
+ 3 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
154
+
65
- エラーがでていまいます。
155
+ 4 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
156
+
157
+ 5 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
66
158
 
67
159
 
68
160
 
@@ -70,26 +162,4 @@
70
162
 
71
163
 
72
164
 
73
-
74
-
75
- 以下はエラーのコードと画面です。
76
-
77
-
78
-
79
- ```Python
80
-
81
- ValueError: shapes (10,9) and (11,) not aligned: 9 (dim 1) != 11 (dim 0)
82
-
83
-
84
-
85
165
  ```
86
-
87
- 列名
88
-
89
- week 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 B C D E
90
-
91
-
92
-
93
- 1行目
94
-
95
- 1 965809.26 1018365.32 357 414 792261 4.079877 602.0 643.0 175 210 94 0 198 212 231 231 0 230 166 79 209 820.0 673.0 811.0 231 154 154 2152.0

2

データ例を追記

2021/10/24 16:59

投稿

Shin_go
Shin_go

スコア19

test CHANGED
File without changes
test CHANGED
@@ -83,3 +83,13 @@
83
83
 
84
84
 
85
85
  ```
86
+
87
+ 列名
88
+
89
+ week 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 B C D E
90
+
91
+
92
+
93
+ 1行目
94
+
95
+ 1 965809.26 1018365.32 357 414 792261 4.079877 602.0 643.0 175 210 94 0 198 212 231 231 0 230 166 79 209 820.0 673.0 811.0 231 154 154 2152.0

1

画像修正

2021/10/23 04:12

投稿

Shin_go
Shin_go

スコア19

test CHANGED
File without changes
test CHANGED
@@ -66,8 +66,6 @@
66
66
 
67
67
 
68
68
 
69
- ![イメージ説明](fe54e7f2b56d2ba1c4b0234084202acb.png)
70
-
71
69
 
72
70
 
73
71
 
@@ -85,9 +83,3 @@
85
83
 
86
84
 
87
85
  ```
88
-
89
-
90
-
91
-
92
-
93
- ![イメージ説明](4404f1821660fa921944965db2afff31.png)