質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

972閲覧

ランダムフォレストや勾配ブースティング回帰木の弱学習器の予測値を取得したい。

i113

総合スコア74

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2019/07/11 02:38

前提・実現したいこと

python3でランダムフォレスト(scikit learn)や勾配ブースティング(LightGBM)を使って機械学習をしています。
ふと弱学習器の予測値から、予測の安定性や信頼度のようなものが評価できるのではないかと考えました(弱学習器同士の結果が類似しているほど安定している信頼できる?)。
そこで保存した学習器を読み出し、所定の特徴量を与えた時、最終的な予測値に加え各弱学習器の予測値も(できれば同時に)取得したいのですが、やり方がわかりません。また勾配ブースティングでは最後に線形結合する時の重みも取得したいです。
よろしくお願いします。

試したこと、該当のソースコード

ここ(https://scikit-learn.org/stable/modules/generated/sklearn.ensemble.RandomForestRegressor.html)を見て、もしかしてX_leavesがそうかなと思い確認してみましたが、インデックスが返ってきました。

python3

1loaded_forest = pickle.load(open('/home/username/jupyter_lab/RandomForest.pickle', 'rb')) 2print(loaded_forest.apply(X_test.loc[0:1]))

output

1[[164986 165035 322799 294009 16770 179009 17417 17570 267422 262120 2 276773 261463 151737 141899 22639 182916 234047 192829 160043 69046 3 31185 268680 88700 16477 71713 145532 174898 167395 66887 342845 4 167554 162721 17607 334158 303226 196298 24452 340699 143654 311956 5 249828 5351 140397 162778 19699 289262 180608 165309 287408 79345 6 169618 263374 144529 258547 144835 17241 16948 77787 153924 233308 7 16180 13638 152615 17418 142858 321507 155943 258476 281854 248653 8 24214 169823 182079 129955 258050 17797 244047 17660 230253 17557 9 226559 161047 53980 270496 2847 177724 154010 22606 20485 105930 10 23972 182382 24513 77768 153548 225014 86759 16487 93654 81506 11 23587 41978 208339 259430 316331 153458 255267 239590 16842 243271 12 338586 265260 5620 164392 171739 25784 249024 228563 176890 17962 13 293084 67501 17793 17367 174240 252836 15688 86671 221525 153041 14 18027 333965 23860 196570 162616 156373 52649 16177 236184 263179 15 16604 293171 161337 82485 23605 232953 19767 142583 215073 162921 16 127983 319221 16037 228787 137056 193238 146904 23899 13813 81683 17 254528 138924 151020 17773 17211 7231 197964 243739 290699 232038 18 17248 163653 244810 12830 60169 17519 176658 296198 47307 137605 19 156200 54149 18026 318979 16755 147532 152606 25603 253396 17901 20 134783 142273 200322 204959 245813 17997 300598 33147] 21 [180259 202376 211641 178563 53081 207588 56127 119056 67414 122670 22 89622 52573 24603 60272 178043 215044 53233 180614 55106 204278 23 183747 84694 26752 57087 72730 189311 60100 71342 120713 212511 24 71901 124900 182783 35989 64158 178558 188699 58469 65323 208984 25 65808 59369 58076 190798 59789 58501 212860 29924 29235 59802 26 88702 59516 62561 63999 207186 60208 214772 57233 62941 59164 27 88717 212756 60969 330240 62558 213497 55322 190905 182133 200560 28 55434 206916 219993 175785 203180 82894 61737 184435 177479 54013 29 254895 63491 66330 110532 61687 235819 22073 276457 196393 235443 30 55439 91073 241622 60084 231018 53952 37314 61916 51538 181667 31 200784 125877 280231 130884 59337 218996 65075 64376 55666 63875 32 131563 58874 56735 56417 134118 66073 57836 59957 132082 91737 33 58107 193629 195826 196906 57707 64068 60427 25038 182032 54306 34 188468 29851 176484 205762 188391 66321 177549 59446 55066 64203 35 89598 58023 64039 221003 50219 64324 137099 53110 310720 62388 36 192167 203279 218156 58740 181988 181772 55876 186988 197869 29142 37 200268 51810 64500 177384 61942 202813 217625 60034 25621 64742 38 74371 185031 59392 209334 63813 55962 213412 172458 116783 203783 39 58366 61176 187893 181108 55848 62924 56092 193764 57833 218396 40 52914 55872 296317 273842 159952 62653 216143 56807]]

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

applyメソッドでどうですか。

投稿2019/07/11 07:08

hayataka2049

総合スコア30933

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

i113

2019/07/11 07:22

applyは使ってみたのですが、葉のインデックスから葉の値を取得する方法がわからず行き詰っています。
hayataka2049

2019/07/11 07:48

すみません、質問文に書いてありましたね。 estimtors_で各分類器のリストが取れるので、ループ等でそれぞれでpredictするのが簡単かと
i113

2019/07/11 08:51

どうもありがとうございます。 そうすると、ランダムフォレストでは各sub-estimatorでpredictした値を重みづけ等せず単純に平均すれば強学習器の予測結果も得られるという理解で良いでしょうか?また勾配ブースティングではどうなりますか?線形結合の重みが必要になると思うのですが?
hayataka2049

2019/07/11 09:25

ランダムフォレストはそれで合っています。勾配ブースティングはあとで確認しますので、しばしお待ち下さい
hayataka2049

2019/07/12 04:51

LighbGBMは実装的に厳しそうですね。取得できるものが少ないようです。
i113

2019/07/16 09:55

そうなのですか、残念です。 どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問