質問編集履歴
6
ソースコードについて追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -122,6 +122,40 @@
|
|
122
122
|
|
123
123
|
```ここに言語名を入力
|
124
124
|
|
125
|
+
"""ライブラリのインポート"""(追記)
|
126
|
+
|
127
|
+
#データ解析用ライブラリ
|
128
|
+
|
129
|
+
import pandas as pd
|
130
|
+
|
131
|
+
import numpy as np
|
132
|
+
|
133
|
+
|
134
|
+
|
135
|
+
#データ可視化ライブラリ
|
136
|
+
|
137
|
+
import matplotlib.pyplot as plt
|
138
|
+
|
139
|
+
import seaborn as sns
|
140
|
+
|
141
|
+
|
142
|
+
|
143
|
+
#RandomForestライブラリ
|
144
|
+
|
145
|
+
from sklearn.ensemble import RandomForestRegressor as RFR
|
146
|
+
|
147
|
+
from sklearn.model_selection import GridSearchCV
|
148
|
+
|
149
|
+
|
150
|
+
|
151
|
+
#訓練データとモデル評価用データに分けるライブラリ
|
152
|
+
|
153
|
+
from sklearn.model_selection import train_test_split
|
154
|
+
|
155
|
+
#-------------------------------------------------------------
|
156
|
+
|
157
|
+
|
158
|
+
|
125
159
|
#データの読み込み
|
126
160
|
|
127
161
|
concrete_data = pd.read_csv(r'C:データ',engine='python')
|
@@ -130,6 +164,60 @@
|
|
130
164
|
|
131
165
|
|
132
166
|
|
167
|
+
#データを訓練用とモデル評価用に分割
|
168
|
+
|
169
|
+
train_set, test_set = train_test_split(concrete_data, test_size=0.2, random_state=4)
|
170
|
+
|
171
|
+
print(len(train_set))
|
172
|
+
|
173
|
+
print(len(test_set))
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
#データの変数 [A,B,C,D,E,F,G,H,I,J,K,L,M,ID]
|
178
|
+
|
179
|
+
|
180
|
+
|
181
|
+
|
182
|
+
|
183
|
+
#訓練データを説明変数データ(X_train)と目的変数データ(y_train)に分割
|
184
|
+
|
185
|
+
X_train = train_set.drop(['A','D','E','F','H','L','M','ID'], axis=1)
|
186
|
+
|
187
|
+
y_train = train_set['M']
|
188
|
+
|
189
|
+
|
190
|
+
|
191
|
+
|
192
|
+
|
193
|
+
#モデル評価用データを説明変数データ(X_train)と目的変数データ(y_train)に分割
|
194
|
+
|
195
|
+
# All
|
196
|
+
|
197
|
+
#X_test = test_set.drop(['A','H','L','M','ID'], axis=1)
|
198
|
+
|
199
|
+
# Slim
|
200
|
+
|
201
|
+
X_test = test_set.drop(['A','D','E','F','H','L','M','ID'], axis=1)
|
202
|
+
|
203
|
+
# non-cyc
|
204
|
+
|
205
|
+
#X_test = test_set.drop(['A','H','J','K','L','M','ID'], axis=1)
|
206
|
+
|
207
|
+
|
208
|
+
|
209
|
+
y_test = test_set['M']
|
210
|
+
|
211
|
+
|
212
|
+
|
213
|
+
#分割データの確認
|
214
|
+
|
215
|
+
print(X_train.head())
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
133
221
|
#モデル構築 RandomForest
|
134
222
|
|
135
223
|
|
@@ -164,6 +252,18 @@
|
|
164
252
|
|
165
253
|
|
166
254
|
|
255
|
+
#モデルフィット
|
256
|
+
|
257
|
+
rf_train = rf.fit(X_train,y_train)
|
258
|
+
|
259
|
+
rf_eval = rf.fit(X_test, y_test)
|
260
|
+
|
261
|
+
params = {'metric': 'rmse',
|
262
|
+
|
263
|
+
'max_depth' : 9}
|
264
|
+
|
265
|
+
|
266
|
+
|
167
267
|
|
168
268
|
|
169
269
|
#予測値算出
|
5
特徴重要度の可視化についての情報を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -223,3 +223,11 @@
|
|
223
223
|
データの分割などは省略しています。
|
224
224
|
|
225
225
|
一応、①についてはできているとは思うのですが、モデル自体正しいのか不安です。
|
226
|
+
|
227
|
+
![![イメージ説明](a9fb8f782dda10ad67c137d03b18e0de.png)
|
228
|
+
|
229
|
+
これが現在出ているグラフです。
|
230
|
+
|
231
|
+
![イメージ説明](e45144518168bdf7c3b060b6d3f97f47.png)
|
232
|
+
|
233
|
+
理想的にはこのようにy軸に説明変数を出したいです。
|
4
予測値についての情報を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,6 +24,12 @@
|
|
24
24
|
|
25
25
|
|
26
26
|
|
27
|
+
追記
|
28
|
+
|
29
|
+
②についても解決したかもしれません。
|
30
|
+
|
31
|
+
|
32
|
+
|
27
33
|
|
28
34
|
|
29
35
|
### 発生している問題・エラーメッセージ
|
3
予測値についての情報を追記しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -40,6 +40,32 @@
|
|
40
40
|
|
41
41
|
|
42
42
|
|
43
|
+
追記
|
44
|
+
|
45
|
+
#予測値算出
|
46
|
+
|
47
|
+
y_pred = rf.predict(X_test)
|
48
|
+
|
49
|
+
#予測値の平均値
|
50
|
+
|
51
|
+
y_pred_true = sum(y_pred)/len(y_pred)
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
print(y_pred)
|
56
|
+
|
57
|
+
print(y_pred_true)
|
58
|
+
|
59
|
+
に変更しました。
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
>[ 0.38222 -1.58526 0.34684 ... 2.14196 1.05836 1.01766]
|
64
|
+
|
65
|
+
>0.007574019218924746
|
66
|
+
|
67
|
+
-------------------------------------------------------------
|
68
|
+
|
43
69
|
特徴重要度の可視化について
|
44
70
|
|
45
71
|
KeyError: 'feature_names'
|
@@ -180,6 +206,10 @@
|
|
180
206
|
|
181
207
|
|
182
208
|
|
209
|
+
②予測値の可視化について、y_predの平均値を取ることで解決したかもしれません。追記します。
|
210
|
+
|
211
|
+
|
212
|
+
|
183
213
|
### 補足情報
|
184
214
|
|
185
215
|
Spyder(Python3.8)を使っています。
|
2
エラーメッセージの全文を追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -49,6 +49,26 @@
|
|
49
49
|
|
50
50
|
|
51
51
|
追記
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
The above exception was the direct cause of the following exception:
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
Traceback (most recent call last):
|
60
|
+
|
61
|
+
|
62
|
+
|
63
|
+
File "Cモデル名", line 150, in <module>
|
64
|
+
|
65
|
+
plt.xticks(x, concrete_data['feature_names'])
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\frame.py", line 3455, in __getitem__
|
70
|
+
|
71
|
+
indexer = self.columns.get_loc(key)
|
52
72
|
|
53
73
|
|
54
74
|
|
1
エラーメッセージの全文を追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -45,6 +45,20 @@
|
|
45
45
|
KeyError: 'feature_names'
|
46
46
|
|
47
47
|
と出て、できていない状況です。
|
48
|
+
|
49
|
+
|
50
|
+
|
51
|
+
追記
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc
|
56
|
+
|
57
|
+
raise KeyError(key) from err
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
KeyError: 'feature_names'
|
48
62
|
|
49
63
|
```
|
50
64
|
|