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

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

ただいまの
回答率

90.86%

  • Python 3.x

    4793questions

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

Pythonでグリッドサーチでのエラー

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 486

gymgym

score 59

Pythonでランダムフォレストのハイパーパラメータを求めたいと考えています。

forest = RandomForestRegressor()
forest.fit(train_features, train_labels)


以上のコードは実行されるのに対し、

# ハイパーパラメータ
forest_grid_param = {
    'n_estimators': [100],
    'max_features': [1, 'auto', None],
    'max_depth': [1, 5, 10, None],
    'min_samples_leaf': [1, 2, 4,]
}

# スコア方法をF1に設定
f1_scoring = make_scorer(f1_score,  pos_label=1)

# グリッドサーチで学習
forest_grid_search = GridSearchCV(RandomForestClassifier(random_state=0, n_jobs=-1), forest_grid_param, scoring=f1_scoring, cv=4)
forest_grid_search.fit(train_features, train_labels)


以上のコードでは、

ValueError: Target is multiclass but average='binary'. Please choose another average setting.


以上のようなエラーが出てしまいます。

グリッドリサーチとランダムフォレストのfitでは、なにか違いがあるのでしょうか。

train_featuresは、

[[  1.29289835e-04   1.17485219e-04   1.19890843e-04 ...,   9.05183214e-05
    8.27563718e-05   8.78005056e-05]
 [  1.49255279e-04   1.35313449e-04   1.36294066e-04 ...,   8.62639847e-05
    9.09304063e-05   7.84873169e-05]
 [  1.88674124e-04   1.92549213e-04   1.94561864e-04 ...,   1.27251725e-04
    1.32504809e-04   1.19707440e-04]
 ..., 
 [  1.16313098e-05   2.90295617e-05   3.99510497e-05 ...,   1.52137304e-05
    1.43487523e-05   3.92287642e-05]
 [  1.58036700e-05   3.00034379e-05   3.78270972e-05 ...,   1.91663956e-05
    2.44618265e-05   2.47100536e-05]
 [  5.88701713e-05   3.20351268e-05   1.23424729e-05 ...,   2.63503805e-05
    4.25346609e-05   3.44451908e-05]]

 
以上のような形式です。

よろしくお願い致します。

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

データに対して行いたいのは回帰ですか?それとも分類ですか?

うまく実行できているといってるものは回帰で、グリッドサーチでは分類器にしているので、同じデータセットであればエラーになっても不思議はないです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/06 00:38

    回答ありがとうございます。
    データに対して行いたいのは、分類です。
    訓練データに対してラベルをつけて分類したいと考えています。

    ランダムフォレストが回帰になっているからうまくいかないのでしょうか。
    分類したいときはまた違う方法があるのでしょうか。

    よろしくお願い致します。

    キャンセル

  • 2018/01/06 10:57

    ラベルはどうなっていますか?
    f1_scoreに渡しているパラメータがデータとかみ合っていないというエラーが出ています。

    キャンセル

  • 2018/01/06 14:48

    ラベルは4クラスに分類したいので、0から3の数値でラベル付けしてあります。

    mkgreiさんのご指摘どおりf1_scoreに渡しているパラメータが原因の可能性があるので考えなおしてみたいと思います。

    キャンセル

  • 2018/01/06 14:59

    f1_score(test_labels, forest.predict(test_features))
    以上のところでエラーがでてしまいます。
    ValueError: Target is multiclass but average='binary'. Please choose another average setting.

    ラベルは、以下の形式です。
    [2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3]

    キャンセル

  • 2018/01/06 15:03

    http://scikit-learn.org/stable/modules/generated/sklearn.metrics.f1_score.html
    キーワードのaverageを多クラス分類でも使えるものに指定してください。

    キャンセル

  • 2018/01/06 15:25

    average = 'micro' に指定したら実行できました。

    丁寧に教えていただきありがとうございました。

    キャンセル

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

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 解決済

    Kerasで学習済みモデルを初期化できない

    kerasを使って学習済みモデルの評価をしようとしています。しかし、重みを設定するとタイトルのようなエラーが出てしまいました。フィルタ数、つまり最初のnOutoutPlaneは32

  • 解決済

    IndentationError: expected an indented block  原因はな...

    Raspberry Pi を使って人感センサーに反応したらiPhoneにお知らせする物を作りたいと思い、調べたところ下記のサイトを発見しました。 https://www.sho-

  • 解決済

    Tensorflowのfully_connected_feedの実行にエラーが続く

    tensoflowのfully_connected_feed.pyを実行しようとしているのですが、どう試行錯誤してもエラーが続きます。 tensorflowのインストールの仕方、

  • 解決済

    ~の意味がわからない

    ~の意味がよくわかりません。 from matplotlib import pyplot as plt from sklearn.datasets import load_i

  • 受付中

    大量のCSVデータの処理方法

    100個ほどCSVファイルがあり、 それぞれのファイルで、30×30のセルに数値が入力されています。 この100個のCSVファイルに対して、同じセル座標について最大値最小値を計算し

  • 解決済

    Pyhon : k 近傍の混同行列

    前提・実現したいこと k 近傍法の実装の正解率の結果を元に混同行列を作成したいのですがどうすればいいのか。(kの大きさごとに混合行列を作成したいため) 該当のソースコード fr

  • 解決済

    Pythonでレーダーチャートを書く方法

    Excelで出力したレーダーチャートと同じ多角形のレーダーチャートをPythonで 出力する方法はありますか? 現在、ここ(https://matplotlib.org/dev

  • 解決済

    PythonのPandasを用いたランダムフォレストのエラー

    X = features_df.ix[:, 1:] y = features_df['labels'] # 学習データとテストデータの分離 X_train, X_test, y_

同じタグがついた質問を見る

  • Python 3.x

    4793questions

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