算法艺术创作
algorithmic-art
通过代码和可调参数创作生成艺术与交互式视觉效果。
ds-experimental-design【设计与创意】"Provides Designs experiments using design of experiments (DOE), factorial designs, randomization, and blocking for efficient learning"
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
name: ds-experimental-design compatibility: opencode completeness: 95 content-types:
Comprehensive guide to experimental design in machine learning and data science workflows.
Experimental Design is a critical component of the machine learning workflow. This skill covers:
import pandas as pd
import numpy as np
from scipy import stats
def generate_factorial_design(factor_levels: dict) -> pd.DataFrame:
"""Generate a full factorial design matrix from factor levels."""
keys = list(factor_levels.keys())
values = list(factor_levels.values())
grid = np.meshgrid(*values, indexing='ij')
design = pd.DataFrame(np.column_stack([g.ravel() for g in grid]), columns=keys)
return design
def apply_randomization(design: pd.DataFrame, seed: int = 42) -> pd.DataFrame:
"""Randomize the order of experimental runs using a reproducible RNG."""
rng = np.random.default_rng(seed)
indices = rng.permutation(len(design))
return design.iloc[indices].reset_index(drop=True)
def create_blocks(design: pd.DataFrame, n_blocks: int) -> pd.DataFrame:
"""Assign experimental runs to blocks to control for nuisance variables."""
block_assignments = np.repeat(np.arange(n_blocks), len(design) // n_blocks)
remainder = len(design) % n_blocks
if remainder > 0:
block_assignments = np.append(block_assignments, np.arange(remainder))
design['block'] = block_assignments
return design
import logging
from typing import Any, Dict, List
import pandas as pd
import numpy as np
from scipy import stats
logger = logging.getLogger(__name__)
class ExperimentalDesign:
"""Production implementation of Experimental Design following ISO 3534 standards."""
def __init__(self, seed: int = 42):
self.seed = seed
self.rng = np.random.default_rng(seed)
def execute(self, data: pd.DataFrame, response_col: str, factors: List[str], n_blocks: int = 1) -> Dict[str, Any]:
"""Execute Experimental Design on data with randomization and blocking."""
if response_col not in data.columns:
raise ValueError(f"Response column '{response_col}' not found in data")
if not all(f in data.columns for f in factors):
raise ValueError(f"All factors must be present in data: {factors}")
design = data[factors].copy()
design = apply_randomization(design, self.seed)
design['block'] = np.repeat(np.arange(n_blocks), len(design) // n_blocks)
remainder = len(design) % n_blocks
if remainder > 0:
design.loc[len(design) - remainder:, 'block'] = np.arange(remainder)
design['response'] = data[response_col].values
if n_blocks > 1:
groups = [group['response'].values for _, group in design.groupby('block')]
f_stat, p_val = stats.f_oneway(*groups)
else:
f_stat, p_val = np.nan, np.nan
results = {
'status': 'success'
'design_matrix': design
'statistics': {'f_statistic': float(f_stat), 'p_value': float(p_val), 'n_runs': len(design)}
'metadata': {'factors': factors, 'blocks': n_blocks, 'seed': self.seed}
}
return results
| Pitfall | Problem | Solution | |
Authoritative documentation links for this skill's domain. The model follows markdown links at load time to resolve external references and inline content.