[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6KCXDXGE97ZP1YSNRNJFYBJ":3,"skill-same:01M6KCXDXGE97ZP1YSNRNJFYBJ":53},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":26,"linkOnly":27,"markdownContent":28,"markdownBody":29,"frontMatter":30,"refName":31,"commitSha":32,"skillDirectory":33,"forksCount":34,"repositoryHtmlUrl":35,"repositoryHomepageUrl":36,"ownerHtmlUrl":37,"ownerBlogUrl":6,"ownerDescription":6,"updatedAt":38,"install":39,"resources":52},"01M6KCXDXGE97ZP1YSNRNJFYBJ","parallel-grid-search",null,"Parallelize hyperparameter grid search using joblib for efficient multi-core execution.","cxcscmu\u002FSkillLearnBench","cxcscmu","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F142838272?v=4","01M6KCQDFQWPDSN0MKZY96MSQP","01M6KCQDM7G70TKJ28NTSQC0RZ",93,"MIT","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb1-one-shot-claude-haiku-4-5\u002Fdbscan-parameter-tuning\u002Fparallel-grid-search\u002FSKILL.md",[],[18,19,20,21,22,23,24,25],"search","parallel","grid","parallel grid search","core","execution","multi","for","2026-11-10 10:12:30",false,"---\nname: parallel-grid-search\ndescription: Parallelize hyperparameter grid search using joblib for efficient multi-core execution.\n---\n\n# Parallel Grid Search\n\n## Overview\nUse joblib to parallelize expensive computations across multiple CPU cores, significantly speeding up grid search over hyperparameter combinations.\n\n## Installation\n\n```bash\npip install joblib scikit-learn\n```\n\n## Basic Pattern\n\n```python\nfrom joblib import Parallel, delayed\nimport itertools\n\ndef evaluate_hyperparams(hp_combination, data, evaluation_func):\n    \"\"\"Evaluate a single hyperparameter combination.\"\"\"\n    result = evaluation_func(hp_combination, data)\n    return {**hp_combination, **result}\n\n# Define hyperparameter grid\nparam_grid = {\n    'min_samples': [3, 4, 5, 6, 7, 8, 9],\n    'epsilon': [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24],\n    'shape_weight': [0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9]\n}\n\n# Generate all combinations\ncombinations = [\n    {k: v for k, v in zip(param_grid.keys(), vals)}\n    for vals in itertools.product(*param_grid.values())\n]\n\n# Parallel evaluation\nn_jobs = -1  # Use all available cores\nresults = Parallel(n_jobs=n_jobs, verbose=10)(\n    delayed(evaluate_hyperparams)(combo, data, eval_func)\n    for combo in combinations\n)\n```\n\n## Advanced: Batching and Progress\n\n```python\nfrom tqdm import tqdm\n\ndef parallel_grid_search_batched(param_grid, data, evaluation_func, n_jobs=-1):\n    \"\"\"\n    Perform parallel grid search with progress tracking.\n\n    Args:\n        param_grid: Dictionary of parameter names to lists of values\n        data: Dataset to evaluate on\n        evaluation_func: Function that takes (hyperparams_dict, data) -> results_dict\n        n_jobs: Number of parallel jobs (-1 = all cores)\n\n    Returns:\n        List of result dictionaries\n    \"\"\"\n    # Generate all combinations\n    combinations = [\n        {k: v for k, v in zip(param_grid.keys(), vals)}\n        for vals in itertools.product(*param_grid.values())\n    ]\n\n    # Parallel evaluation with progress bar\n    results = Parallel(n_jobs=n_jobs)(\n        delayed(evaluation_func)(combo, data)\n        for combo in tqdm(combinations, desc=\"Grid Search\", total=len(combinations))\n    )\n\n    return results\n```\n\n## joblib Best Practices\n\n### Memory-Efficient Processing\n\n```python\n# Use batch_size for memory efficiency\nresults = Parallel(n_jobs=-1, batch_size='auto')(\n    delayed(expensive_function)(item)\n    for item in data\n)\n```\n\n### Controlling Verbosity\n\n```python\n# verbose=10 prints progress every 10 jobs\n# verbose=0 is silent, verbose=1 prints at start\u002Fend\nresults = Parallel(n_jobs=-1, verbose=10)(\n    delayed(task)(x) for x in items\n)\n```\n\n### Backend Selection\n\n```python\n# Default is 'loky' (good for most tasks)\n# 'threading' is lighter but can have GIL issues\n# 'processes' spawns new processes\n\nresults = Parallel(n_jobs=-1, backend='loky')(\n    delayed(task)(x) for x in items\n)\n```\n\n## Collecting Results into DataFrame\n\n```python\nimport pandas as pd\n\nresults = Parallel(n_jobs=-1)(\n    delayed(evaluate_hyperparams)(combo, data, eval_func)\n    for combo in combinations\n)\n\n# Convert to DataFrame\nresults_df = pd.DataFrame(results)\n\n# Filter and sort\nfiltered = results_df[results_df['f1'] > 0.5].sort_values('f1', ascending=False)\n```\n\n## Notes\n- joblib handles pickling of functions and data automatically\n- For very large datasets, consider passing data references rather than copies\n- Use `n_jobs=-1` to use all cores; use `-2` to leave one core free\n- Progress tracking requires `tqdm` package\n","# Parallel Grid Search\n\n## Overview\nUse joblib to parallelize expensive computations across multiple CPU cores, significantly speeding up grid search over hyperparameter combinations.\n\n## Installation\n\n```bash\npip install joblib scikit-learn\n```\n\n## Basic Pattern\n\n```python\nfrom joblib import Parallel, delayed\nimport itertools\n\ndef evaluate_hyperparams(hp_combination, data, evaluation_func):\n    \"\"\"Evaluate a single hyperparameter combination.\"\"\"\n    result = evaluation_func(hp_combination, data)\n    return {**hp_combination, **result}\n\n# Define hyperparameter grid\nparam_grid = {\n    'min_samples': [3, 4, 5, 6, 7, 8, 9],\n    'epsilon': [4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24],\n    'shape_weight': [0.9, 1.0, 1.1, 1.2, 1.3, 1.4, 1.5, 1.6, 1.7, 1.8, 1.9]\n}\n\n# Generate all combinations\ncombinations = [\n    {k: v for k, v in zip(param_grid.keys(), vals)}\n    for vals in itertools.product(*param_grid.values())\n]\n\n# Parallel evaluation\nn_jobs = -1  # Use all available cores\nresults = Parallel(n_jobs=n_jobs, verbose=10)(\n    delayed(evaluate_hyperparams)(combo, data, eval_func)\n    for combo in combinations\n)\n```\n\n## Advanced: Batching and Progress\n\n```python\nfrom tqdm import tqdm\n\ndef parallel_grid_search_batched(param_grid, data, evaluation_func, n_jobs=-1):\n    \"\"\"\n    Perform parallel grid search with progress tracking.\n\n    Args:\n        param_grid: Dictionary of parameter names to lists of values\n        data: Dataset to evaluate on\n        evaluation_func: Function that takes (hyperparams_dict, data) -> results_dict\n        n_jobs: Number of parallel jobs (-1 = all cores)\n\n    Returns:\n        List of result dictionaries\n    \"\"\"\n    # Generate all combinations\n    combinations = [\n        {k: v for k, v in zip(param_grid.keys(), vals)}\n        for vals in itertools.product(*param_grid.values())\n    ]\n\n    # Parallel evaluation with progress bar\n    results = Parallel(n_jobs=n_jobs)(\n        delayed(evaluation_func)(combo, data)\n        for combo in tqdm(combinations, desc=\"Grid Search\", total=len(combinations))\n    )\n\n    return results\n```\n\n## joblib Best Practices\n\n### Memory-Efficient Processing\n\n```python\n# Use batch_size for memory efficiency\nresults = Parallel(n_jobs=-1, batch_size='auto')(\n    delayed(expensive_function)(item)\n    for item in data\n)\n```\n\n### Controlling Verbosity\n\n```python\n# verbose=10 prints progress every 10 jobs\n# verbose=0 is silent, verbose=1 prints at start\u002Fend\nresults = Parallel(n_jobs=-1, verbose=10)(\n    delayed(task)(x) for x in items\n)\n```\n\n### Backend Selection\n\n```python\n# Default is 'loky' (good for most tasks)\n# 'threading' is lighter but can have GIL issues\n# 'processes' spawns new processes\n\nresults = Parallel(n_jobs=-1, backend='loky')(\n    delayed(task)(x) for x in items\n)\n```\n\n## Collecting Results into DataFrame\n\n```python\nimport pandas as pd\n\nresults = Parallel(n_jobs=-1)(\n    delayed(evaluate_hyperparams)(combo, data, eval_func)\n    for combo in combinations\n)\n\n# Convert to DataFrame\nresults_df = pd.DataFrame(results)\n\n# Filter and sort\nfiltered = results_df[results_df['f1'] > 0.5].sort_values('f1', ascending=False)\n```\n\n## Notes\n- joblib handles pickling of functions and data automatically\n- For very large datasets, consider passing data references rather than copies\n- Use `n_jobs=-1` to use all cores; use `-2` to leave one core free\n- Progress tracking requires `tqdm` package\n",{"name":5,"description":7},"main","726e1f79b96b0cb3d729d0e55a1c847e0b5353ae","skills\u002Fb1-one-shot-claude-haiku-4-5\u002Fdbscan-parameter-tuning\u002Fparallel-grid-search",7,"https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench","https:\u002F\u002Fcxcscmu.github.io\u002FSkillLearnBench","https:\u002F\u002Fgithub.com\u002Fcxcscmu","2026-10-02 22:55:36",{"source":8,"skillName":5,"commands":40,"prompt":50,"zipAvailable":51},[41,44,47],{"tool":42,"command":43},"npx","npx skills add cxcscmu\u002FSkillLearnBench --skill parallel-grid-search",{"tool":45,"command":46},"bunx","bunx skills add cxcscmu\u002FSkillLearnBench --skill parallel-grid-search",{"tool":48,"command":49},"pnpm","pnpm dlx skills add cxcscmu\u002FSkillLearnBench --skill parallel-grid-search","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fb1-one-shot-claude-haiku-4-5\u002Fdbscan-parameter-tuning\u002Fparallel-grid-search\u002FSKILL.md",true,[],[54,72,96,113,133,145],{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":65,"publishedAt":26},"01M6KM5KH175P5ABP5JMX2SBDQ","object_counter","Count occurrences of an object in the image using computer vision algorithm.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Fvideo-object-counting\u002Fobject_counter\u002FSKILL.md",[60],{"categoryNo":61,"categoryName":62,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000016","图像与多媒体","SCENARIO","使用场景",[66,67,68,69,70,71],"object counter","object","vision","computer","Computer Vision","image",{"skillNo":73,"name":74,"nameZh":6,"description":75,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":81,"publishedAt":26},"01M6KM51TMVXG79MMPCS6Y8G86","travel-planning-workflow","Invoke this skill when performing travel planning. It defines a structured workflow for generating itineraries. Following this workflow is essential to ensure the final plan satisfies user requirements.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Ftravel-planning-workflow\u002FSKILL.md",[78],{"categoryNo":79,"categoryName":80,"taxonomyType":63,"taxonomyTypeDesc":64},"01JBSEEDCAT000000000000023","Skill与智能体开发",[82,83,84,85,86,87,88,89,90,25,91,92,93,94,95],"workflow","planning","planning workflow","travel","travel planning","travel planning workflow","structured","performing","plan","user","it","requirements","essential","itineraries",{"skillNo":97,"name":98,"nameZh":6,"description":99,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":100,"categories":101,"keywords":102,"publishedAt":26},"01M6KM4DY820XHS9YTSK5QP5HD","bundled-dataset-search-tool","invoke this skill when you need to perform database search for travel planning. This skill provides some useful pre-packaged tools to look up accommodations, attractions, cities, driving distance, flights, and restaurants from the bundled dataset.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftravel-planning\u002Fbundled-dataset-search-tool\u002FSKILL.md",[],[18,103,104,105,106,107,108,85,109,110,86,111,25,112,83],"tool","dataset","bundled dataset search tool","restaurants","Tools","up","look","flights","you","database",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":119,"publishedAt":26},"01M6KM465BB9PQ0B548HQSVAWZ","glm-output","Output-processing guidance for GLM tasks. Especially useful after glm-basics and glm-calibration when you need verifier-matching metrics from output.nc and a final \u002Froot\u002Fmetrics.json.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-output\u002FSKILL.md",[],[120,121,122,25,123,124,125,126,127,128,129,130,111,131,132],"glm output","output","glm","tasks","metrics","json","basics","guidance","matching","verifier","processing","root","calibration",{"skillNo":134,"name":135,"nameZh":6,"description":136,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":137,"categories":138,"keywords":140,"publishedAt":26},"01M6KM40KY3QWDW5W97S39R2BC","glm-calibration","Calibration guidance for GLM tasks. Often most effective after glm-basics has clarified the setup; glm-output is the companion skill for exact final metric computation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-calibration\u002FSKILL.md",[139],{"categoryNo":79,"categoryName":80,"taxonomyType":63,"taxonomyTypeDesc":64},[141,132,122,121,127,126,123,142,143,25,144],"glm calibration","setup","companion","metric",{"skillNo":146,"name":147,"nameZh":6,"description":148,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":6,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":149,"categories":150,"keywords":151,"publishedAt":26},"01M6KM3VHHVSGMGHJQB3PPT6YG","glm-basics","A good starting point for GLM calibration tasks. Use to inspect glm3.nml, confirm how GLM runs, and identify the relevant files before moving on to calibration and output evaluation.","https:\u002F\u002Fgithub.com\u002Fcxcscmu\u002FSkillLearnBench\u002Fblob\u002Fmain\u002Fskills\u002Fhuman_authored\u002Ftemperature-simulation\u002Fglm-basics\u002FSKILL.md",[],[152,122,126,153,141,132,25,121,154,155,156,157,158,159,123],"glm basics","inspect","relevant","files","good","use","how","Evaluation"]