Первичная версия: стилометрия реплик, LSA и протокол экспериментов
This commit is contained in:
35
lab1/tests/test_cv.py
Normal file
35
lab1/tests/test_cv.py
Normal file
@@ -0,0 +1,35 @@
|
||||
"""Тесты кросс-валидации на синтетических данных."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import numpy as np
|
||||
import pandas as pd
|
||||
|
||||
from stylometry.cv import run_repeated_cv
|
||||
|
||||
|
||||
def test_repeated_cv_runs_and_has_all_predictions() -> None:
|
||||
rng = np.random.default_rng(0)
|
||||
n_samples = 60
|
||||
n_classes = 3
|
||||
X = pd.DataFrame(
|
||||
{
|
||||
"feature_1": rng.normal(size=n_samples),
|
||||
"feature_2": rng.normal(size=n_samples),
|
||||
}
|
||||
)
|
||||
y = np.repeat([f"c{index}" for index in range(n_classes)], 20)
|
||||
from sklearn.linear_model import LogisticRegression
|
||||
from sklearn.pipeline import Pipeline
|
||||
from sklearn.preprocessing import StandardScaler
|
||||
|
||||
pipeline = Pipeline(
|
||||
[("scale", StandardScaler()), ("model", LogisticRegression(max_iter=1000))]
|
||||
)
|
||||
result = run_repeated_cv(
|
||||
pipeline, X, y, n_splits=3, n_repeats=2, seed=42, verbose=False
|
||||
)
|
||||
assert len(result.oof) == n_samples * 2
|
||||
assert set(result.oof["y_true"]) == set(y)
|
||||
assert result.fold_metrics["macro_f1"].between(0, 1).all()
|
||||
assert result.labels.tolist() == ["c0", "c1", "c2"]
|
||||
Reference in New Issue
Block a user