File size: 1,810 Bytes
262feea
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
import pandas as pd
import numpy as np
from itertools import combinations


def generate_features(df, candidate_numbers=None):
    """
    Generate simple frequency/recency features for each number 1–50
    """
    numbers = list(range(1, 51)) if candidate_numbers is None else candidate_numbers
    draws = df[["n1", "n2", "n3", "n4", "n5", "n6"]].values.tolist()

    features = []
    labels = []

    # Flatten draws
    for idx, row in df.iterrows():
        draw_nums = set(row[["n1", "n2", "n3", "n4", "n5", "n6"]].tolist())
        for n in numbers:
            # Label: 1 if number in this draw, else 0
            label = 1 if n in draw_nums else 0
            labels.append(label)

            # Features
            last_seen = -1
            for back, prev in enumerate(draws[:idx][::-1], 1):
                if n in prev:
                    last_seen = back
                    break

            freq_50 = sum([1 for prev in draws[max(0, idx-50):idx] if n in prev])
            freq_200 = sum([1 for prev in draws[max(0, idx-200):idx] if n in prev])

            features.append([n, freq_50, freq_200, last_seen if last_seen != -1 else 999])

    X = pd.DataFrame(features, columns=["number", "freq50", "freq200", "recency"])
    y = np.array(labels)
    return X, y


def pick_top15(all_numbers_df):
    """
    Return top 15 numbers sorted by score
    """
    top15 = all_numbers_df.sort_values("score", ascending=False).head(15)["number"].tolist()
    return sorted(top15)


def generate_system15_csv(top15, output_path="system15.csv"):
    """
    Generate all 5005 combinations of 15 numbers into a CSV
    """
    combos = list(combinations(top15, 6))
    df = pd.DataFrame(combos, columns=[f"n{i}" for i in range(1, 7)])
    df.to_csv(output_path, index=False)
    return output_path