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

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

新規登録して質問してみよう
ただいま回答率
87.20%
Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python

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

解決済

Alightgbmの種類 pridict_probaを持たないlightgbm

esklia
esklia

総合スコア81

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python

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

2回答

0評価

0クリップ

833閲覧

投稿2021/07/14 09:15

編集2021/07/14 10:05

lightgbmについて質問です。サイキットラーンAPIやなんとかAPIなどいろいろな種類がありますが、

conda listで以下のように表示される
lightgbm 3.1.1 py38hd77b12b_0
lightgbmは何のバージョン?だと考えられますか?おそらくインポートするときはimport lightgbm as lgb
というコードからしてサイキットラーンAPIなどではなく、素?のlightgbmをアナコンダでインストールしたと考えています。

補足 おそらくconda.orgのサイトを見て以下のコードのうちどれかでダウンロードしました。

conda install -c conda-forge lightgbm conda install -c conda-forge/label/cf201901 lightgbm conda install -c conda-forge/label/cf202003 lightgbm

補足2

<module 'lightgbm' from 'C:\Users\USER\anaconda3\envs\KASOUKANKYOU\lib\site-packages\lightgbm\__init__.py'>

また、その場合以下のドキュメントにあるように、
https://lightgbm.readthedocs.io/en/latest/pythonapi/lightgbm.LGBMClassifier.html#lightgbm.LGBMClassifier.predict_proba

pridict_probaメソッドを持つはずなのですが、これが使えない理由を知りたいです。

error

predpro = gbm.predict_proba(test_x) Traceback (most recent call last): File "C:\Users\hoge\anaconda3\envs\hoge\lib\site-packages\optuna\_optimize.py", line 216, in _run_trial value_or_values = func(trial) File "c:\Users\hoge\作業ディレクトリ\作業ディレクトリ\作業ディレクトリ\base_lightgbm_optuna_plus_logeer copy.py", line 79, in objective predpro = gbm.predict_proba(test_x) AttributeError: 'Booster' object has no attribute 'predict_proba'
import matplotlib.pyplot as plt; import numpy as np ;import pandas as pd ;import seaborn as sns; pd.set_option('display.max_columns',10000);np.set_printoptions(threshold=90000) import os, sys, datetime import logging from logging import StreamHandler, DEBUG, Formatter, FileHandler, getLogger import chainer as ch import optuna import lightgbm as lgb def objective(trial): PATH = './pickle/' data = pd.read_pickle(f'{PATH}prd_tr.pkl') test = pd.read_pickle(f'{PATH}prd_te.pkl') target = pd.read_pickle(f'{PATH}y.pkl') train_x, test_x, train_y, test_y = train_test_split(data, target, test_size=0.25) dtrain = lgb.Dataset(train_x, label=train_y) param = { 'objective': 'binary', 'metric': 'auc', 'lambda_l1': trial.suggest_loguniform('lambda_l1', 1e-8, 10.0), 'lambda_l2': trial.suggest_loguniform('lambda_l2', 1e-8, 10.0), 'num_leaves': trial.suggest_int('num_leaves', 2, 256), 'feature_fraction': trial.suggest_uniform('feature_fraction', 0.4, 1.0), 'bagging_fraction': trial.suggest_uniform('bagging_fraction', 0.4, 1.0), 'bagging_freq': trial.suggest_int('bagging_freq', 1, 7), 'min_child_samples': trial.suggest_int('min_child_samples', 5, 100), } gbm = lgb.train(param, dtrain) predpro = gbm.predict_proba(test_x) preds = gbm.predict(test_x) pred_labels = np.rint(preds) accuracy = sklearn.metrics.accuracy_score(test_y, pred_labels) rocauc = roc_auc_score(test_y.values.tolist(), predpro) pruning_callback = optuna.integration.LightGBMPruningCallback(trial, 'auc') logger.info(' accuracy:{}'.format(accuracy)) return accuracy if __name__ == "__main__": study = optuna.create_study(direction="maximize") study.optimize(objective, n_trials=10) # n_trials=300がPBの最高スコア # study.best_trial #best_valueを出したときの試行内容 trial = study.best_trial PATH = './pickle/' train = pd.read_pickle(f'{PATH}prd_tr.pkl') test = pd.read_pickle(f'{PATH}prd_te.pkl') y = pd.read_pickle(f'{PATH}y.pkl') dtrain = lgb.Dataset(train, label=y) gbm = lgb.train(trial.params, dtrain) preds = gbm.predict(test) pred_labels = np.abs(np.rint(preds)) pred_labels = pred_labels.astype(np.int)

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

まだ回答がついていません

会員登録して回答してみよう

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

Kaggle

Kaggleは、機械学習モデルを構築するコンペティションのプラットフォームおよびその運営企業を指します。企業や政府といった組織とデータサイエンティスト・機械学習エンジニアを繋げるプラットフォームであり、単純なマッチングではなくコンペティションが特徴です。

Python

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