質問編集履歴
6
ソースコードについて追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -60,10 +60,54 @@
|
|
60
60
|
### 該当のソースコード
|
61
61
|
|
62
62
|
```ここに言語名を入力
|
63
|
+
"""ライブラリのインポート"""(追記)
|
64
|
+
#データ解析用ライブラリ
|
65
|
+
import pandas as pd
|
66
|
+
import numpy as np
|
67
|
+
|
68
|
+
#データ可視化ライブラリ
|
69
|
+
import matplotlib.pyplot as plt
|
70
|
+
import seaborn as sns
|
71
|
+
|
72
|
+
#RandomForestライブラリ
|
73
|
+
from sklearn.ensemble import RandomForestRegressor as RFR
|
74
|
+
from sklearn.model_selection import GridSearchCV
|
75
|
+
|
76
|
+
#訓練データとモデル評価用データに分けるライブラリ
|
77
|
+
from sklearn.model_selection import train_test_split
|
78
|
+
#-------------------------------------------------------------
|
79
|
+
|
63
80
|
#データの読み込み
|
64
81
|
concrete_data = pd.read_csv(r'C:データ',engine='python')
|
65
82
|
print(concrete_data.head())#読み込みの確認
|
66
83
|
|
84
|
+
#データを訓練用とモデル評価用に分割
|
85
|
+
train_set, test_set = train_test_split(concrete_data, test_size=0.2, random_state=4)
|
86
|
+
print(len(train_set))
|
87
|
+
print(len(test_set))
|
88
|
+
|
89
|
+
#データの変数 [A,B,C,D,E,F,G,H,I,J,K,L,M,ID]
|
90
|
+
|
91
|
+
|
92
|
+
#訓練データを説明変数データ(X_train)と目的変数データ(y_train)に分割
|
93
|
+
X_train = train_set.drop(['A','D','E','F','H','L','M','ID'], axis=1)
|
94
|
+
y_train = train_set['M']
|
95
|
+
|
96
|
+
|
97
|
+
#モデル評価用データを説明変数データ(X_train)と目的変数データ(y_train)に分割
|
98
|
+
# All
|
99
|
+
#X_test = test_set.drop(['A','H','L','M','ID'], axis=1)
|
100
|
+
# Slim
|
101
|
+
X_test = test_set.drop(['A','D','E','F','H','L','M','ID'], axis=1)
|
102
|
+
# non-cyc
|
103
|
+
#X_test = test_set.drop(['A','H','J','K','L','M','ID'], axis=1)
|
104
|
+
|
105
|
+
y_test = test_set['M']
|
106
|
+
|
107
|
+
#分割データの確認
|
108
|
+
print(X_train.head())
|
109
|
+
|
110
|
+
|
67
111
|
#モデル構築 RandomForest
|
68
112
|
|
69
113
|
rf = RFR(n_estimators=100, #フォレスト内のツリーの数、デフォルト=100
|
@@ -81,7 +125,13 @@
|
|
81
125
|
verbose=True, #詳細
|
82
126
|
warm_start=False) #前の呼び出しの解を再利用、デフォルト=False
|
83
127
|
|
128
|
+
#モデルフィット
|
129
|
+
rf_train = rf.fit(X_train,y_train)
|
130
|
+
rf_eval = rf.fit(X_test, y_test)
|
131
|
+
params = {'metric': 'rmse',
|
132
|
+
'max_depth' : 9}
|
84
133
|
|
134
|
+
|
85
135
|
#予測値算出
|
86
136
|
y_pred = rf.predict(X_test)
|
87
137
|
|
5
特徴重要度の可視化についての情報を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -110,4 +110,8 @@
|
|
110
110
|
### 補足情報
|
111
111
|
Spyder(Python3.8)を使っています。
|
112
112
|
データの分割などは省略しています。
|
113
|
-
一応、①についてはできているとは思うのですが、モデル自体正しいのか不安です。
|
113
|
+
一応、①についてはできているとは思うのですが、モデル自体正しいのか不安です。
|
114
|
+

|
115
|
+
これが現在出ているグラフです。
|
116
|
+

|
117
|
+
理想的にはこのようにy軸に説明変数を出したいです。
|
4
予測値についての情報を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -11,7 +11,10 @@
|
|
11
11
|
①についてはできたのですが②と③についてはできていないのでお力を貸してください。
|
12
12
|
初心者で勉強不足ですが宜しくお願いします。
|
13
13
|
|
14
|
+
追記
|
15
|
+
②についても解決したかもしれません。
|
14
16
|
|
17
|
+
|
15
18
|
### 発生している問題・エラーメッセージ
|
16
19
|
|
17
20
|
```
|
3
予測値についての情報を追記しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -19,6 +19,19 @@
|
|
19
19
|
[ 0.38222 -1.58526 0.34684 ... 2.14196 1.05836 1.01766]
|
20
20
|
と出るのでできれば一つの予測値にしたいです。
|
21
21
|
|
22
|
+
追記
|
23
|
+
#予測値算出
|
24
|
+
y_pred = rf.predict(X_test)
|
25
|
+
#予測値の平均値
|
26
|
+
y_pred_true = sum(y_pred)/len(y_pred)
|
27
|
+
|
28
|
+
print(y_pred)
|
29
|
+
print(y_pred_true)
|
30
|
+
に変更しました。
|
31
|
+
|
32
|
+
>[ 0.38222 -1.58526 0.34684 ... 2.14196 1.05836 1.01766]
|
33
|
+
>0.007574019218924746
|
34
|
+
-------------------------------------------------------------
|
22
35
|
特徴重要度の可視化について
|
23
36
|
KeyError: 'feature_names'
|
24
37
|
と出て、できていない状況です。
|
@@ -89,6 +102,8 @@
|
|
89
102
|
データ読み込みの際にnamesで列名をつけることができると拝見したので、feature_namesを定義して、concrete_data = pd.read_csv(r'C:データ',engine='python',names=feature_names)で読み込んでみましたがだめでした。
|
90
103
|
そもそもfeature importanceのコードはほぼコピペなので適してるかもわかりません。
|
91
104
|
|
105
|
+
②予測値の可視化について、y_predの平均値を取ることで解決したかもしれません。追記します。
|
106
|
+
|
92
107
|
### 補足情報
|
93
108
|
Spyder(Python3.8)を使っています。
|
94
109
|
データの分割などは省略しています。
|
2
エラーメッセージの全文を追加しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -25,6 +25,16 @@
|
|
25
25
|
|
26
26
|
追記
|
27
27
|
|
28
|
+
The above exception was the direct cause of the following exception:
|
29
|
+
|
30
|
+
Traceback (most recent call last):
|
31
|
+
|
32
|
+
File "Cモデル名", line 150, in <module>
|
33
|
+
plt.xticks(x, concrete_data['feature_names'])
|
34
|
+
|
35
|
+
File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\frame.py", line 3455, in __getitem__
|
36
|
+
indexer = self.columns.get_loc(key)
|
37
|
+
|
28
38
|
File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc
|
29
39
|
raise KeyError(key) from err
|
30
40
|
|
1
エラーメッセージの全文を追加しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -22,6 +22,13 @@
|
|
22
22
|
特徴重要度の可視化について
|
23
23
|
KeyError: 'feature_names'
|
24
24
|
と出て、できていない状況です。
|
25
|
+
|
26
|
+
追記
|
27
|
+
|
28
|
+
File "C:\Users\Owner\anaconda3\lib\site-packages\pandas\core\indexes\base.py", line 3363, in get_loc
|
29
|
+
raise KeyError(key) from err
|
30
|
+
|
31
|
+
KeyError: 'feature_names'
|
25
32
|
```
|
26
33
|
|
27
34
|
### 該当のソースコード
|