# tkbo 生成AI投入用コンテキスト

> このファイルは `tkbo` を使うコード生成のため、マニュアルとAPIリファレンスを1ファイルへ統合したものです。API名・引数は下記APIリファレンスを優先し、存在しないAPIを推測で作らないでください。ソースコードが同時に与えられた場合はソースコードを最優先します。

---

# tkbo マニュアル

## 1. 役割

`tkbo` は、**離散的な候補点集合から、次に評価する点を選ぶ**ためのベイズ最適化・適応学習パッケージです。回帰器そのものを比較・利用する `tkmlr` と責務を分け、`tkbo` は `initialize → ask → tell` の探索ループを担当します。

内部は次の3層に分かれます。

| 層 | 責務 |
|---|---|
| surrogate | 観測データから候補点の予測平均・標準偏差を返す |
| acquisition | 予測平均・標準偏差から候補点のスコアを計算する |
| backend / optimizer | 候補集合、観測済み点、`ask/tell` ループを管理する |

## 2. 推奨import

```python
from tkbo import create_optimizer
```

独自バックエンド等を登録するときだけ、次を追加します。

```python
from tkbo import register_backend, register_surrogate, register_acquisition
```

## 3. 最小例

```python
import numpy as np
from tkbo import create_optimizer

X = np.linspace(0.0, 10.0, 101).reshape(-1, 1)
y = np.full(len(X), np.nan)

initial = np.array([0, 30, 80])
y[initial] = np.sin(X[initial, 0])

optimizer = create_optimizer(
    model="sklearn_gpr",
    acquisition="ei",
    surrogate__alpha=1.0e-8,
    surrogate__n_restarts_optimizer=10,
)
optimizer.initialize(X, y=y)

suggestion = optimizer.ask(n_points=1)
index = int(suggestion.indices[0])
value = float(np.sin(X[index, 0]))  # 実際には実験・計算を実行
optimizer.tell(index, value)
```

`y` を候補数と同じ長さにし、未観測点を `np.nan` とする形式が最も単純です。

## 4. バックエンド

| `model` / `backend` | 意味 |
|---|---|
| `sklearn_gpr` | `CustomOptimizer` + sklearn GPR surrogate |
| `physbo_gp` | `CustomOptimizer` + PHYSBO surrogate |
| `custom` | surrogate と acquisition を明示指定 |
| `physbo` | PHYSBO native の離散探索 |
| `random` | 未観測候補からランダム選択 |
| `grid` | 元の順序で未観測候補を返す |

`model="sklearn_gpr"` と `model="physbo_gp"` は、内部で `backend="custom"` に変換されます。

## 5. acquisition関数

| 名前 | クラス | 主なパラメータ | 用途 |
|---|---|---|---|
| `ei` | `ExpectedImprovement` | `xi` | 改善量と不確かさの両方を考慮 |
| `pi` | `ProbabilityImprovement` | `xi` | 改善確率を最大化 |
| `ucb` | `UpperConfidenceBound` | `kappa` | 平均と不確かさの加重和 |
| `lcb` | `LowerConfidenceBound` | `kappa` | 最小化向けの下側信頼限界 |
| `stein` | `SteinLiteAcquisition` | `eps`, `std_weight`, `grad_weight` | 不確かさと平均勾配を使う探索heuristic |
| `entropy` | `EntropySearchLite` | なし | `log(std)` による不確かさ探索 |

`stein` は厳密なSVGDではなく、有限差分した予測平均の勾配を使う実務的な探索スコアです。

## 6. データ契約

- `X_candidates`: shape `(n_candidates, n_features)` の数値配列。1次元配列は `(n, 1)` に変換されます。
- `y`: 候補数と同じ長さで、未観測を `NaN` にするか、`observed_indices` と同じ長さにします。
- `observed_mask`: 候補数と同じ長さのbool配列。
- `ask()` の戻り値: `BOResult(indices, scores, X)`。
- `tell(indices, y_new)`: 候補インデックスと新しい目的値を登録します。
- `maximize=False`: 最小化問題として扱います。

観測点が1点もない状態では、`CustomOptimizer.ask()` は未観測点を先頭から返し、予測平均は `NaN`、標準偏差は `inf` になります。初期点をランダムにしたい場合は `random` backendを使うか、初期観測を明示してください。

## 7. パラメータの渡し方

`create_optimizer()` では、surrogate用とacquisition用のパラメータを接頭辞で分離します。

```python
optimizer = create_optimizer(
    model="sklearn_gpr",
    acquisition="ucb",
    maximize=True,
    surrogate__alpha=1.0e-8,
    surrogate__n_restarts_optimizer=20,
    acquisition__kappa=2.5,
)
```

接頭辞なしの引数はoptimizer backendへ渡されます。

## 8. 独自acquisitionの登録

```python
import numpy as np
from tkbo.base import BaseAcquisition
from tkbo import register_acquisition

class MeanPlusUncertainty(BaseAcquisition):
    name = "mean_plus_uncertainty"

    def __init__(self, weight=2.0):
        self.weight = float(weight)

    def __call__(self, X, mean, std, y_observed=None,
                 observed_mask=None, maximize=True, **kwargs):
        mean = np.asarray(mean, dtype=float)
        std = np.asarray(std, dtype=float)
        signed_mean = mean if maximize else -mean
        return signed_mean + self.weight * std

register_acquisition("mean_plus_uncertainty", MeanPlusUncertainty)
```

## 9. CLI

```bash
python -m tkbo.cli \
  --mode ask \
  --infile data.xlsx \
  --target "max:y" \
  --features x1,x2 \
  --model sklearn_gpr \
  --acquisition ei
```

CLIはpandasでCSV/Excelを読み、候補・予測・提案フラグを付加した表を出力します。正確なオプションは `python -m tkbo.cli --help` で確認してください。

## 10. 依存関係

- 必須コア: `numpy`
- analytic acquisition: `scipy`
- `sklearn_gpr`: `scikit-learn`
- `physbo` / `physbo_gp`: `physbo`
- CLI表入出力: `pandas`, Excelでは `openpyxl`

## 11. 生成AI向けコード生成ルール

1. 通常は `create_optimizer()` を使い、backendクラスを直接生成しない。
2. 離散候補集合を必ず先に用意し、`initialize()` を1回呼ぶ。
3. 未観測目的値は `NaN` とし、0や空文字で代用しない。
4. `ask()` が返すのは候補の**インデックス**であり、目的値ではない。
5. 実験・計算後に同じインデックスを `tell()` へ返す。
6. surrogateパラメータは `surrogate__`、acquisitionパラメータは `acquisition__` を付ける。
7. 連続変数最適化、制約最適化、多目的Pareto最適化を、このAPIだけで実装済みと仮定しない。
8. PHYSBO固有スコアとtkbo側acquisitionを混同しない。独自acquisitionには `model="physbo_gp"` または `model="sklearn_gpr"` を使う。


---

# tkbo APIリファレンス

> 対象ソース: `tklib2.zip`（解析日: 2026-08-03）。この文書はソースコードを静的解析して生成しています。

## APIの読み方

- **パッケージ公開API**は、原則としてトップレベルの `__all__` に含まれる名前です。
- **モジュールAPI**には、公開名（先頭が `_` でない関数・クラス・メソッド）を列挙しています。
- docstringがないAPIでは、シグネチャとソースパスを一次情報として扱ってください。
- 生成AIは、この文書に存在しない引数・戻り値・メソッドを推測で追加しないでください。

## パッケージ公開API

```python
from tkbo import (
    create_optimizer,
    register_backend,
    register_acquisition,
    register_surrogate,
)
```

| 名前 | 推奨用途 |
|---|---|
| `create_optimizer` | トップレベルから安定してimportできる公開API |
| `register_backend` | トップレベルから安定してimportできる公開API |
| `register_acquisition` | トップレベルから安定してimportできる公開API |
| `register_surrogate` | トップレベルから安定してimportできる公開API |

## モジュール一覧

| モジュール | ソース | 関数 | クラス |
|---|---|---:|---:|
| `tkbo` | `tkbo/__init__.py` | 0 | 0 |
| `tkbo.acquisitions` | `tkbo/acquisitions/__init__.py` | 0 | 0 |
| `tkbo.acquisitions.analytic` | `tkbo/acquisitions/analytic.py` | 0 | 4 |
| `tkbo.acquisitions.entropy` | `tkbo/acquisitions/entropy.py` | 0 | 1 |
| `tkbo.acquisitions.stein` | `tkbo/acquisitions/stein.py` | 0 | 1 |
| `tkbo.backends` | `tkbo/backends/__init__.py` | 0 | 0 |
| `tkbo.backends.custom_backend` | `tkbo/backends/custom_backend.py` | 0 | 1 |
| `tkbo.backends.physbo_backend` | `tkbo/backends/physbo_backend.py` | 0 | 1 |
| `tkbo.backends.simple` | `tkbo/backends/simple.py` | 0 | 2 |
| `tkbo.base` | `tkbo/base.py` | 4 | 4 |
| `tkbo.cli` | `tkbo/cli.py` | 3 | 0 |
| `tkbo.data` | `tkbo/data.py` | 3 | 0 |
| `tkbo.factory` | `tkbo/factory.py` | 3 | 0 |
| `tkbo.registry` | `tkbo/registry.py` | 6 | 0 |
| `tkbo.surrogates` | `tkbo/surrogates/__init__.py` | 0 | 0 |
| `tkbo.surrogates.physbo_gp` | `tkbo/surrogates/physbo_gp.py` | 0 | 1 |
| `tkbo.surrogates.sklearn_gpr` | `tkbo/surrogates/sklearn_gpr.py` | 0 | 1 |

## `tkbo`

ソース: `tkbo/__init__.py`

tkbo: lightweight Bayesian/adaptive optimization helpers.

Design goals
------------
- Discrete candidate optimization for experimental design.
- Backend switching by ``model`` / ``backend`` parameter.
- PHYSBO can be used in two ways:
    1. PHYSBO native backend: uses PHYSBO's own bayes_search (EI/PI/TS).
    2. Custom backend with PhysBOSurrogate: uses PHYSBO posterior mean/std
       and tkbo-side acquisition functions.
- sklearn GaussianProcessRegressor backend is available for flexible kernels
  and custom acquisition functions.

_このモジュールには静的解析で検出された公開関数・クラス・定数はありません。_

## `tkbo.acquisitions`

ソース: `tkbo/acquisitions/__init__.py`

_このモジュールには静的解析で検出された公開関数・クラス・定数はありません。_

## `tkbo.acquisitions.analytic`

ソース: `tkbo/acquisitions/analytic.py`

### class `ExpectedImprovement` — bases: `BaseAcquisition`

Analytic EI for independent posterior mean/std.

**コンストラクタ**

```python
ExpectedImprovement(xi: float = 0.0)
```

**クラス定数**

| 名前 | 値 |
|---|---|
| `name` | `'ei'` |

### class `ProbabilityImprovement` — bases: `BaseAcquisition`

_ソース内docstringはありません。シグネチャと実装を参照してください。_

**コンストラクタ**

```python
ProbabilityImprovement(xi: float = 0.0)
```

**クラス定数**

| 名前 | 値 |
|---|---|
| `name` | `'pi'` |

### class `UpperConfidenceBound` — bases: `BaseAcquisition`

_ソース内docstringはありません。シグネチャと実装を参照してください。_

**コンストラクタ**

```python
UpperConfidenceBound(kappa: float = 2.0)
```

**クラス定数**

| 名前 | 値 |
|---|---|
| `name` | `'ucb'` |

### class `LowerConfidenceBound` — bases: `BaseAcquisition`

LCB score converted so larger is better.

**コンストラクタ**

```python
LowerConfidenceBound(kappa: float = 2.0)
```

**クラス定数**

| 名前 | 値 |
|---|---|
| `name` | `'lcb'` |

## `tkbo.acquisitions.entropy`

ソース: `tkbo/acquisitions/entropy.py`

### class `EntropySearchLite` — bases: `BaseAcquisition`

Simple uncertainty/entropy score for Gaussian marginal posterior.

For a Gaussian marginal, entropy is proportional to log(std).

**クラス定数**

| 名前 | 値 |
|---|---|
| `name` | `'entropy'` |

## `tkbo.acquisitions.stein`

ソース: `tkbo/acquisitions/stein.py`

### class `SteinLiteAcquisition` — bases: `BaseAcquisition`

Practical Stein-like exploration score.

This is not a strict SVGD implementation.  It is an extensible heuristic:

    score = std_weight * std + grad_weight * std * ||grad mean||

The gradient is evaluated by finite difference using surrogate.predict().
This class expects ``model`` to be passed in kwargs by CustomOptimizer.

**コンストラクタ**

```python
SteinLiteAcquisition(eps: float = 1e-05, std_weight: float = 1.0, grad_weight: float = 1.0)
```

**クラス定数**

| 名前 | 値 |
|---|---|
| `name` | `'stein'` |

## `tkbo.backends`

ソース: `tkbo/backends/__init__.py`

_このモジュールには静的解析で検出された公開関数・クラス・定数はありません。_

## `tkbo.backends.custom_backend`

ソース: `tkbo/backends/custom_backend.py`

### class `CustomOptimizer` — bases: `BaseOptimizer`

Discrete BO optimizer with pluggable surrogate and acquisition.

This is the main extension point for custom scores such as Stein-lite.

**コンストラクタ**

```python
CustomOptimizer(surrogate: BaseSurrogate, acquisition: BaseAcquisition, maximize: bool = True, refit_each_tell: bool = True)
```

**メソッド／プロパティ**

#### method `CustomOptimizer.initialize`

```python
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### property `CustomOptimizer.observed_indices`

```python
def observed_indices(self) -> np.ndarray
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### property `CustomOptimizer.y_observed`

```python
def y_observed(self) -> np.ndarray
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `CustomOptimizer.predict`

```python
def predict(self, X = None, return_std: bool = True)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `CustomOptimizer.acquisition`

```python
def acquisition(self, X = None)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `CustomOptimizer.ask`

```python
def ask(self, n_points: int = 1) -> BOResult
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `CustomOptimizer.tell`

```python
def tell(self, indices, y_new)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.backends.physbo_backend`

ソース: `tkbo/backends/physbo_backend.py`

### class `PhysBONativeOptimizer` — bases: `BaseOptimizer`

PHYSBO-native discrete optimizer.

Uses PHYSBO's own bayes_search and score modes (typically EI/PI/TS).
For arbitrary custom scores, use CustomOptimizer with PhysBOSurrogate or
SklearnGPRSurrogate instead.

**コンストラクタ**

```python
PhysBONativeOptimizer(score_mode: str = 'EI', num_rand_basis: int = 200, interval: int = 0, random_seed: int | None = None, maximize: bool = True)
```

**メソッド／プロパティ**

#### method `PhysBONativeOptimizer.initialize`

```python
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `PhysBONativeOptimizer.ask`

```python
def ask(self, n_points: int = 1) -> BOResult
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `PhysBONativeOptimizer.tell`

```python
def tell(self, indices, y_new)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `PhysBONativeOptimizer.predict`

```python
def predict(self, X = None, return_std: bool = True)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.backends.simple`

ソース: `tkbo/backends/simple.py`

### class `RandomOptimizer` — bases: `BaseOptimizer`

_ソース内docstringはありません。シグネチャと実装を参照してください。_

**コンストラクタ**

```python
RandomOptimizer(random_seed: int | None = None)
```

**メソッド／プロパティ**

#### method `RandomOptimizer.initialize`

```python
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask = None, observed_indices = None)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `RandomOptimizer.ask`

```python
def ask(self, n_points: int = 1)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `RandomOptimizer.tell`

```python
def tell(self, indices, y_new)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `RandomOptimizer.predict`

```python
def predict(self, X = None, return_std: bool = True)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### class `GridOptimizer` — bases: `BaseOptimizer`

Sequentially returns unobserved candidates in their original order.

**メソッド／プロパティ**

#### method `GridOptimizer.initialize`

```python
def initialize(self, X_candidates, y: Optional[Sequence[float]] = None, observed_mask = None, observed_indices = None)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `GridOptimizer.ask`

```python
def ask(self, n_points: int = 1)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `GridOptimizer.tell`

```python
def tell(self, indices, y_new)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `GridOptimizer.predict`

```python
def predict(self, X = None, return_std: bool = True)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.base`

ソース: `tkbo/base.py`

### class `BOResult`

Result returned by ask().

**データクラス相当の初期化フィールド**

```python
BOResult(indices: np.ndarray, scores: Optional[np.ndarray] = None, X: Optional[np.ndarray] = None)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `indices` | `np.ndarray` | `必須` |
| `scores` | `Optional[np.ndarray]` | `None` |
| `X` | `Optional[np.ndarray]` | `None` |

### class `BaseSurrogate`

Base class for surrogate models.

Surrogates provide posterior mean/std.  They do not decide the next point.

**データクラス相当の初期化フィールド**

```python
BaseSurrogate(supports_std: bool = False)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `supports_std` | `bool` | `False` |

**メソッド／プロパティ**

#### method `BaseSurrogate.fit`

```python
def fit(self, X: np.ndarray, y: np.ndarray) -> 'BaseSurrogate'
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `BaseSurrogate.predict`

```python
def predict(self, X: np.ndarray, return_std: bool = False)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `BaseSurrogate.get_params`

```python
def get_params(self, deep: bool = True) -> dict[str, Any]
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `BaseSurrogate.set_params`

```python
def set_params(self, **params: Any) -> 'BaseSurrogate'
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### class `BaseAcquisition`

Base class for acquisition functions.

**データクラス相当の初期化フィールド**

```python
BaseAcquisition(name: str = 'base')
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `name` | `str` | `'base'` |

### class `BaseOptimizer`

Base ask/tell optimizer for discrete candidate sets.

**メソッド／プロパティ**

#### method `BaseOptimizer.initialize`

```python
def initialize(self, X_candidates: np.ndarray, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None) -> 'BaseOptimizer'
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `BaseOptimizer.ask`

```python
def ask(self, n_points: int = 1) -> BOResult
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `BaseOptimizer.tell`

```python
def tell(self, indices: Sequence[int] | int, y_new: Sequence[float] | float) -> 'BaseOptimizer'
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `BaseOptimizer.predict`

```python
def predict(self, X: Optional[np.ndarray] = None, return_std: bool = True)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `as_2d_array`

```python
def as_2d_array(X: Any, name: str = 'X') -> np.ndarray
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `as_1d_array`

```python
def as_1d_array(y: Any, name: str = 'y') -> np.ndarray
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `make_observed_mask`

```python
def make_observed_mask(n: int, y: Optional[Sequence[float]] = None, observed_mask: Optional[Sequence[bool]] = None, observed_indices: Optional[Sequence[int]] = None) -> np.ndarray
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `top_k_from_score`

```python
def top_k_from_score(score: np.ndarray, k: int, observed_mask: Optional[np.ndarray] = None) -> np.ndarray
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.cli`

ソース: `tkbo/cli.py`

### function `build_parser`

```python
def build_parser()
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `run`

```python
def run(args)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `main`

```python
def main()
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.data`

ソース: `tkbo/data.py`

### function `read_table`

```python
def read_table(path: str | Path, sheet_name = 0) -> pd.DataFrame
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `infer_columns`

```python
def infer_columns(df: pd.DataFrame, target: str | None = None, features: str | list[str] | None = None)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `split_observed_candidates`

```python
def split_observed_candidates(df: pd.DataFrame, target: str, features: list[str])
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.factory`

ソース: `tkbo/factory.py`

### function `create_surrogate`

```python
def create_surrogate(name: str, **params: Any)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `create_acquisition`

```python
def create_acquisition(name: str, **params: Any)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `create_optimizer`

```python
def create_optimizer(model: str = 'custom', backend: str | None = None, surrogate: str = 'sklearn_gpr', acquisition: str = 'ei', **params: Any)
```

Create optimizer.

Parameters
----------
model, backend:
    Backend selector. ``model`` is accepted for user-facing CLI compatibility.
    Examples: ``physbo``, ``custom``, ``sklearn_gpr``, ``random``, ``grid``.
surrogate:
    Surrogate used by custom backend. Examples: ``sklearn_gpr``, ``physbo_gp``.
acquisition:
    Acquisition used by custom backend. Examples: ``ei``, ``pi``, ``ucb``, ``stein``.
params:
    Passed to backend. For CustomOptimizer, use prefixes:
    ``surrogate__alpha=...`` and ``acquisition__kappa=...``.

## `tkbo.registry`

ソース: `tkbo/registry.py`

### 公開定数・モジュール変数

| 名前 | 型/値 |
|---|---|
| `BACKENDS` | `dict[str, type]` = `{}` |
| `SURROGATES` | `dict[str, type]` = `{}` |
| `ACQUISITIONS` | `dict[str, type]` = `{}` |

### function `register_backend`

```python
def register_backend(name: str, cls: type) -> None
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `register_surrogate`

```python
def register_surrogate(name: str, cls: type) -> None
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `register_acquisition`

```python
def register_acquisition(name: str, cls: type) -> None
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `get_backend`

```python
def get_backend(name: str) -> type
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `get_surrogate`

```python
def get_surrogate(name: str) -> type
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `get_acquisition`

```python
def get_acquisition(name: str) -> type
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.surrogates`

ソース: `tkbo/surrogates/__init__.py`

_このモジュールには静的解析で検出された公開関数・クラス・定数はありません。_

## `tkbo.surrogates.physbo_gp`

ソース: `tkbo/surrogates/physbo_gp.py`

### class `PhysBOSurrogate` — bases: `BaseSurrogate`

PHYSBO posterior wrapper used as a regression surrogate.

PHYSBO is naturally designed for discrete candidate search.  This wrapper
builds a PHYSBO policy using the supplied training points as its test_X.
In the tkbo CustomOptimizer, fit() is normally called with the observed
subset and predict() is evaluated for X_candidates.

Note
----
PHYSBO may be more robust when X passed to predict() is identical to the
candidate set used at policy construction.  For flexible arbitrary-X GPR,
use SklearnGPRSurrogate or a future BoTorch surrogate.

**コンストラクタ**

```python
PhysBOSurrogate(num_rand_basis: int = 200, interval: int = 0, score_mode: str = 'EI', random_seed: int | None = None)
```

**クラス定数**

| 名前 | 値 |
|---|---|
| `supports_std` | `True` |

**メソッド／プロパティ**

#### method `PhysBOSurrogate.fit`

```python
def fit(self, X, y)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `PhysBOSurrogate.predict`

```python
def predict(self, X, return_std: bool = False)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `PhysBOSurrogate.acquisition`

```python
def acquisition(self, X, mode: str | None = None)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `PhysBOSurrogate.get_params`

```python
def get_params(self, deep: bool = True) -> dict[str, Any]
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tkbo.surrogates.sklearn_gpr`

ソース: `tkbo/surrogates/sklearn_gpr.py`

### class `SklearnGPRSurrogate` — bases: `BaseSurrogate`

sklearn GaussianProcessRegressor wrapper.

Hyperparameters are optimized by maximizing log marginal likelihood during fit(),
not only by cross validation.

**コンストラクタ**

```python
SklearnGPRSurrogate(kernel = None, alpha: float = 1e-10, normalize_y: bool = True, n_restarts_optimizer: int = 10, random_state: int | None = None, length_scale: float = 1.0, noise_level: float | None = None)
```

**クラス定数**

| 名前 | 値 |
|---|---|
| `supports_std` | `True` |

**メソッド／プロパティ**

#### method `SklearnGPRSurrogate.fit`

```python
def fit(self, X, y)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `SklearnGPRSurrogate.predict`

```python
def predict(self, X, return_std: bool = False)
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `SklearnGPRSurrogate.get_params`

```python
def get_params(self, deep: bool = True) -> dict[str, Any]
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

