-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_large_arrays.py
More file actions
43 lines (35 loc) · 1.51 KB
/
test_large_arrays.py
File metadata and controls
43 lines (35 loc) · 1.51 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
"""Quick test: verify large-array logic is intact after regime-aware changes."""
import random
random.seed(42)
from sorting.recommender import SortingRecommender
r = SortingRecommender()
r.load_model()
print("=== LARGE ARRAY REGIME TESTS ===\n")
cases = [
("Random 1000", [random.random() for _ in range(1000)]),
("Random 5000", [random.random() for _ in range(5000)]),
("Random 10000", [random.random() for _ in range(10000)]),
("Nearly sorted 1000", list(range(1000))),
("Nearly sorted 5000", list(range(5000))),
("Reverse sorted 1000", list(range(1000, 0, -1))),
("Reverse sorted 5000", list(range(5000, 0, -1))),
("Many dupes 5000", [random.randint(1, 10) for _ in range(5000)]),
]
for name, arr in cases:
res = r.recommend(arr, return_probabilities=True)
algo = res["algorithm"]
alpha = res["adaptive_alpha"]
probs = res["probabilities"]
print(f"{name:25s} | algo={algo:18s} | alpha={alpha} | probs={probs}")
print("\n=== COMPARISON: what raw ML model would have predicted ===\n")
import numpy as np
for name, arr in cases:
features = r.feature_extractor.extract(arr)
fv = r.feature_extractor.to_vector(features)
X = np.array([fv])
pred = r.model.predict(X)[0]
raw_algo = r.label_encoder.inverse_transform([pred])[0]
blended_algo = r.recommend(arr)["algorithm"]
match = "SAME" if raw_algo == blended_algo else "CHANGED"
print(f"{name:25s} | raw_ML={raw_algo:18s} | blended={blended_algo:18s} | {match}")
print("\nDone.")