Добавлены параметры моделей, веса блоков и руководство по настройке

This commit is contained in:
2026-10-25 16:08:00 +03:00
parent 10e2444d23
commit 5a4a19e0df
7 changed files with 537 additions and 11 deletions

View File

@@ -373,13 +373,24 @@ def cmd_run(args: argparse.Namespace) -> int:
)
overrides = dict(config_data.get("features", {}))
for key in ("char_ngram_range", "pos_ngram_range"):
for key in ("char_ngram_range", "pos_ngram_range", "groups"):
if key in overrides and isinstance(overrides[key], list):
overrides[key] = tuple(overrides[key])
if "lsa_variants" in overrides and isinstance(overrides["lsa_variants"], list):
overrides["lsa_variants"] = tuple(overrides["lsa_variants"])
feature_config = _feature_config(preset, overrides)
pipeline = build_pipeline(feature_config, model)
model_params = dict(config_data.get("model_params", {}))
if args.model_params:
try:
extra_params = json.loads(args.model_params)
except json.JSONDecodeError as error:
raise ValueError(f"Некорректный JSON в --model-params: {error}") from error
if not isinstance(extra_params, dict):
raise ValueError("--model-params должен быть JSON-объектом.")
model_params.update(extra_params)
pipeline = build_pipeline(feature_config, model, **model_params)
run_config = {
"preset": preset,
"model": model,
@@ -390,6 +401,7 @@ def cmd_run(args: argparse.Namespace) -> int:
"n_classes": int(len(np.unique(y))),
"corpus_sha256": frame.attrs.get("corpus_sha256", ""),
"feature_config": dict(feature_config.__dict__),
"model_params": model_params,
"package_versions": _package_versions(),
}
@@ -492,6 +504,7 @@ def cmd_ablate(args: argparse.Namespace) -> int:
lsa_components=base.lsa_components,
stylo_scaler=base.stylo_scaler,
stylo_normalize=base.stylo_normalize,
block_weights=dict(base.block_weights),
include_stylo=True,
include_lsa=base.include_lsa,
char_max_features=base.char_max_features,
@@ -772,6 +785,11 @@ def build_parser() -> argparse.ArgumentParser:
run.add_argument("--folds", type=int, default=None)
run.add_argument("--repeats", type=int, default=None)
run.add_argument("--seed", type=int, default=None)
run.add_argument(
"--model-params",
default=None,
help='JSON с параметрами модели, например \'{"C": 0.3, "class_weight": "balanced"}\'',
)
run.add_argument("--nested", action="store_true", help="Вложенная кросс-валидация")
run.set_defaults(func=cmd_run)