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
1 2predpro = gbm.predict_proba(test_x) 3 4Traceback (most recent call last): 5 File "C:\Users\hoge\anaconda3\envs\hoge\lib\site-packages\optuna\_optimize.py", line 216, in _run_trial 6 value_or_values = func(trial) 7 File "c:\Users\hoge\作業ディレクトリ\作業ディレクトリ\作業ディレクトリ\base_lightgbm_optuna_plus_logeer copy.py", line 79, in objective 8 predpro = gbm.predict_proba(test_x) 9AttributeError: '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)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/14 10:20
2021/07/14 10:42
2021/07/14 10:48