If you want to find the best pipeline for your dataset automatically, use the BruteForceSearch class from tods.searcher.
Workflow:
- Generate Problem: Create a
problem_description using generate_problem(dataset, metric). - Setup Backend: Initialize a
SimpleRunner (e.g., backend = SimpleRunner(random_seed=0)). - Initialize Searcher:
search = BruteForceSearch(problem_description=problem_description, backend=backend). - Search: Call
search.search_fit(input_data=[dataset], time_limit=seconds). - Retrieve Results: The best pipeline is found in
best_runtime.pipeline.
from tods import generate_dataset, generate_problem
from tods.searcher import BruteForceSearch
from axolotl.backend.simple import SimpleRunner
# 1. Prepare data and problem
dataset = generate_dataset(df, target_index=6)
problem_description = generate_problem(dataset, metric='F1_MACRO')
# 2. Setup
backend = SimpleRunner(random_seed=0)
search = BruteForceSearch(problem_description=problem_description, backend=backend)
# 3. Search
# time_limit is in seconds
best_runtime, best_pipeline_result = search.search_fit(input_data=[dataset], time_limit=30)
# 4. Results
best_pipeline = best_runtime.pipeline
print(f"Best Pipeline ID: {best_pipeline.id}")
# Read data and generate dataset and problem
df = pd.read_csv(table_path)
dataset = generate_dataset(df, target_index=target_index)
problem_description = generate_problem(dataset, metric)
# Start backend
backend = SimpleRunner(random_seed=0)
# Start search algorithm
search = BruteForceSearch(problem_description=problem_description,
backend=backend)
# Find the best pipeline
best_runtime, best_pipeline_result = search.search_fit(input_data=[dataset], time_limit=time_limit)
best_pipeline = best_runtime.pipeline
best_output = best_pipeline_result.output