pytoolkit.lgb module¶
LightGBM関連。
importしただけでlightgbm.register_loggerを呼び出すため注意。
サンプル
import pytoolkit.lgb
import pytoolkit.tablurs
train_data_path = "path/to/train.csv"
test_data_path = "path/to/test.csv"
input_data_path = "path/to/input.csv"
# ログの初期化
pytoolkit.logs.init()
# データの読み込み
train_data, train_labels = pytoolkit.tablurs.load_labeled_data(
train_data_path, "label_col_name"
)
test_data, test_labels = pytoolkit.tablurs.load_labeled_data(
test_data_path, "label_col_name"
)
# 学習
model = pytoolkit.lgb.train(train_data, train_labels, groups=None)
# 保存・読み込み
model.save(model_dir)
model = pytoolkit.lgb.load(model_dir)
# 評価
evals = model.evaluate(test_data, test_labels)
assert 0.0 <= evals["acc"] <= 1.0
assert 0.0 <= evals["auc"] <= 1.0
# 推論
input_data = pytoolkit.tablurs.load_unlabeled_data(input_data_path)
results = model.infer(input_data)
assert isinstance(results, np.ndarray)
- class pytoolkit.lgb.Model(boosters, metadata)[ソース]¶
ベースクラス:
BaseModel
テーブルデータのモデル。
- パラメータ:
boosters (list[lightgbm.basic.Booster]) --
metadata (ModelMetadata) --
- classmethod load(model_dir)[ソース]¶
モデルの読み込み
- パラメータ:
model_dir (str | PathLike[str]) -- 保存先ディレクトリ
- 戻り値:
モデル
- 戻り値の型:
- evaluate(data, labels)[ソース]¶
推論。
- パラメータ:
data (DataFrame | DataFrame) -- 入力データ
labels (_SupportsArray[dtype] | _NestedSequence[_SupportsArray[dtype]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) -- ラベル
- 戻り値:
スコア
- 戻り値の型:
dict[str, float]
- infer(data, verbose=True)[ソース]¶
推論。
- パラメータ:
data (DataFrame | DataFrame) -- 入力データ
verbose (bool) -- 進捗表示の有無
- 戻り値:
推論結果(分類ならshape=(num_samples,num_classes), 回帰ならshape=(num_samples,))
- 戻り値の型:
ndarray[Any, dtype[float32]]
- infer_oof(data, folds, verbose=True)[ソース]¶
out-of-fold推論。
- パラメータ:
data (DataFrame | DataFrame) -- 入力データ
folds (Sequence[tuple[numpy.ndarray[Any, numpy.dtype[numpy.int32]], numpy.ndarray[Any, numpy.dtype[numpy.int32]]]]) -- 分割方法
verbose (bool) -- 進捗表示の有無
- 戻り値:
推論結果(分類ならshape=(num_samples,num_classes), 回帰ならshape=(num_samples,))
- 戻り値の型:
ndarray[Any, dtype[float32]]
- pytoolkit.lgb.train(data, labels, weights=None, groups=None, folds=None, task='auto', categorical_feature='auto', init_score=None, num_boost_round=9999, do_early_stopping=True, first_metric_only=True, learning_rate=0.1, objective=None, metric=None, fobj=None, feval=None, eval_train_metric=False, hpo=False, do_bagging=True, encode_categoricals=True, seed=1)[ソース]¶
学習
- パラメータ:
data (DataFrame | DataFrame) -- 入力データ
labels (_SupportsArray[dtype] | _NestedSequence[_SupportsArray[dtype]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) -- ラベル
weights (_SupportsArray[dtype] | _NestedSequence[_SupportsArray[dtype]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes] | None) -- 入力データの重み
groups (_SupportsArray[dtype] | _NestedSequence[_SupportsArray[dtype]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes] | None) -- 入力データのグループ
folds (Sequence[tuple[numpy.ndarray[Any, numpy.dtype[numpy.int32]], numpy.ndarray[Any, numpy.dtype[numpy.int32]]]] | None) -- CVの分割情報
do_early_stopping (bool) -- Early Stoppingをするのか否か
hpo (bool) -- optunaによるハイパーパラメータ探索を行うのか否か
do_bagging (bool) -- bagging_fraction, feature_fractionを設定するのか否か。 ラウンド数が少ない場合はFalseの方が安定するかも。 hpo=Trueなら効果なし。
categorical_feature (Literal['auto'] | list[str]) -- カテゴリ列
encode_categoricals (bool) -- categorical_featureに指定した列をエンコードするか否か
seed (int) -- 乱数シード
task (Literal['classification', 'regression', 'auto']) --
init_score (_SupportsArray[dtype] | _NestedSequence[_SupportsArray[dtype]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes] | None) --
num_boost_round (int) --
first_metric_only (bool) --
learning_rate (float) --
eval_train_metric (bool) --
- 戻り値:
モデル
- 戻り値の型:
- pytoolkit.lgb.load(model_dir)[ソース]¶
学習済みモデルの読み込み
- パラメータ:
model_dir (str | PathLike[str]) -- 保存先ディレクトリ
- 戻り値:
モデル
- 戻り値の型: