pytoolkit.sklearn module

LightGBM関連。

importしただけでlightgbm.register_loggerを呼び出すため注意。

サンプル

import pytoolkit.sklearn
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.sklearn.train(train_data, train_labels, groups=None)

# 保存・読み込み
model.save(model_dir)
model = pytoolkit.sklearn.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.sklearn.ModelMetadata[ソース]

ベースクラス: TypedDict

モデルのメタデータの型定義。

task: Literal['binary', 'multiclass', 'regression'][ソース]
columns: list[str][ソース]
class_names: list[Any] | None[ソース]
nfold: int[ソース]
class pytoolkit.sklearn.Model(estimators, metadata)[ソース]

ベースクラス: BaseModel

テーブルデータのモデル。

パラメータ:
  • estimators (list[sklearn.base.BaseEstimator]) --

  • metadata (ModelMetadata) --

save(model_dir)[ソース]

保存。

パラメータ:

model_dir (str | PathLike[str]) -- 保存先ディレクトリ

戻り値の型:

None

classmethod load(model_dir)[ソース]

モデルの読み込み

パラメータ:

model_dir (str | PathLike[str]) -- 保存先ディレクトリ

戻り値:

モデル

戻り値の型:

Model

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]]

infers_to_labels(pred)[ソース]

推論結果(infer, infer_oof)からクラス名などを返す。

パラメータ:

pred (ndarray[Any, dtype[float32]]) -- 推論結果

戻り値:

クラス名など

戻り値の型:

ndarray[Any, dtype[ScalarType]]

pytoolkit.sklearn.train(data, labels, groups=None, folds=None, task='auto', estimator=None)[ソース]

学習

パラメータ:
  • data (DataFrame | DataFrame) -- 入力データ

  • labels (_SupportsArray[dtype] | _NestedSequence[_SupportsArray[dtype]] | bool | int | float | complex | str | bytes | _NestedSequence[bool | int | float | complex | str | bytes]) -- ラベル

  • 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 -- Early Stoppingをするのか否か

  • hpo -- optunaによるハイパーパラメータ探索を行うのか否か

  • do_bagging -- bagging_fraction, feature_fractionを設定するのか否か。 ラウンド数が少ない場合はFalseの方が安定するかも。 hpo=Trueなら効果なし。

  • categorical_feature -- カテゴリ列

  • encode_categoricals -- categorical_featureに指定した列をエンコードするか否か

  • task (Literal['classification', 'regression', 'auto']) --

  • estimator (BaseEstimator | None) --

戻り値:

モデル

戻り値の型:

Model

pytoolkit.sklearn.load(model_dir)[ソース]

学習済みモデルの読み込み

パラメータ:

model_dir (str | PathLike[str]) -- 保存先ディレクトリ

戻り値:

モデル

戻り値の型:

Model