🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1494閲覧

ランダムフォレストの作成済モデルの再利用でエラーが出ます。。

python_2019

総合スコア68

機械学習

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/10/20 08:29

ランダムフォレストの作成済モデルを再利用しようとすると、以下のようなエラーが出ます。
なぜでしょうか?
詳しい方、ご指導お願いします。

import pickle with open('モデル(ランダムフォレスト)_4番.sav', mode='rb') as fp: model = pickle.load(fp) import numpy as np import pandas as pd df1 = pd.read_excel('【本番データ】20190915-2000-統合_縦系列.xlsx',sheetname='全')# 未知データのエクセル読み込み X_pred = np.array(df1) y_pred = model.predict(X_pred) print(X_pred,y_pred) NotFittedError Traceback (most recent call last) <ipython-input-24-243ae6141533> in <module> 4 df1 = pd.read_excel('【本番データ】20190915-2000-統合_縦系列.xlsx',sheetname='全')# 未知データのエクセル読み込み 5 X_pred = np.array(df1) ----> 6 y_pred = model.predict(X_pred) 7 print(X_pred,y_pred) ~\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py in predict(self, X) 543 The predicted classes. 544 """ --> 545 proba = self.predict_proba(X) 546 547 if self.n_outputs_ == 1: ~\Anaconda3\lib\site-packages\sklearn\ensemble\forest.py in predict_proba(self, X) 584 classes corresponds to that in the attribute `classes_`. 585 """ --> 586 check_is_fitted(self, 'estimators_') 587 # Check data 588 X = self._validate_X_predict(X) ~\Anaconda3\lib\site-packages\sklearn\utils\validation.py in check_is_fitted(estimator, attributes, msg, all_or_any) 912 913 if not all_or_any([hasattr(estimator, attr) for attr in attributes]): --> 914 raise NotFittedError(msg % {'name': type(estimator).__name__}) 915 916 NotFittedError: This RandomForestClassifier instance is not fitted yet. Call 'fit' with appropriate arguments before using this method.

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

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

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

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

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

guest

回答1

0

ベストアンサー

This RandomForestClassifier instance is not fitted yet.

とあるので、読み込んだモデル(モデル(ランダムフォレスト)_4番.sav)が未学習なのか、保存するときに学習前のモデルを保存したか、モデルが壊れているのではないでしょうか?

投稿2019/10/21 02:29

nandymak

総合スコア799

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

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

python_2019

2019/10/21 04:25

ご指導ありがとうございます。 以下のように学習済モデルを保存したつもりなのですが、これは学習前のモデルなのでしょか? 学習や保存自体は正常にされているようなのですが...。 間違い箇所など、お教え頂ければ助かります。よろしくお願いいたします。 --- # ランダムフォレストの実行 from sklearn.ensemble import RandomForestClassifier #model = RandomForestClassifier() # 訓練データで学習 clf = RandomForestClassifier(random_state=0) # 分類器RandomForest clf.fit(x_train, y_train) # 学習 # モデルを保存する(ランダムフォレスト) import pickle filename = 'モデル(ランダムフォレスト)_4番.sav' pickle.dump(model, open(filename, 'wb'))
nandymak

2019/10/21 04:34 編集

学習結果はclfではないですか?modelは空では? ※コメントになっているのでエラーになるようにも思いますけど。。。 以前も同じ質問をされていたのではないでしょうか? ランダムフォレストでもSVMでも考え方は同じですよ。
python_2019

2019/10/21 05:07

ご連絡ありがとうございます。 私の単純な構文ミスでした。 model→clf に修正すると、うまく行きました。 (modelは別の個所で誤って指定していました) 何度も失礼いたしました。 もう一度、過去の質問をよく思い出して質問するようにいたします。 助かりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問