You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Sacred存储GridSearchCV实验、folium可视化及ML实验工具选型的问询

解答你的机器学习实验存储相关问题

Hey Angelo, great question about ML experiment tracking—let's break this down step by step based on your preference for Sacred!

1. 在Sacred中记录GridSearchCV的每一项测试并保存对象

Sacred完全支持捕获GridSearchCV的细节和保存整个对象,甚至能比ModelChimp更灵活地自定义记录内容:

保存GridSearchCV对象

你可以用Sacred的ex.add_artifact()方法直接把训练好的GridSearchCV对象保存为pickle文件,方便后续加载复用:

from sacred import Experiment
from sklearn.model_selection import GridSearchCV
from sklearn.svm import SVC
import pickle

ex = Experiment("gridsearch_example")

@ex.automain
def run():
    # 定义模型和参数网格
    param_grid = {'C': [0.1, 1, 10], 'kernel': ['linear', 'rbf']}
    svc = SVC()
    grid_search = GridSearchCV(svc, param_grid, cv=3)
    
    # 假设你有X_train, y_train数据集
    grid_search.fit(X_train, y_train)
    
    # 保存GridSearchCV对象作为artifact
    with open("gridsearch_model.pkl", "wb") as f:
        pickle.dump(grid_search, f)
    ex.add_artifact("gridsearch_model.pkl", name="gridsearch_cv_model")

记录每一项测试的细节

要记录每个参数组合的得分、参数等信息,你可以遍历GridSearchCV的cv_results_字典,用Sacred的ex.log_dict()或ex.log_scalar()逐个记录:

@ex.automain
def run():
    # ... 前面的grid_search.fit()代码 ...
    
    # 遍历所有测试项
    for idx in range(len(grid_search.cv_results_['params'])):
        params = grid_search.cv_results_['params'][idx]
        mean_score = grid_search.cv_results_['mean_test_score'][idx]
        std_score = grid_search.cv_results_['std_test_score'][idx]
        
        # 用log_dict记录该测试的完整信息
        ex.log_dict({
            f"gridsearch_run_{idx}": {
                "parameters": params,
                "mean_test_score": mean_score,
                "std_test_score": std_score
            }
        })
        
        # 也可以单独记录得分,方便后续可视化对比
        ex.log_scalar(f"test_score_run_{idx}", mean_score)

这样所有测试细节都会被Sacred的观察者(比如MongoDB、文件系统)存储下来,你可以通过Sacred的CLI或可视化面板查看。

2. 可视化folium生成的HTML地图

无论是Sacred还是ModelChimp,都支持存储和访问folium导出的HTML文件:

在Sacred中处理HTML地图

Sacred可以直接把HTML文件作为artifact上传,之后你可以从实验记录中下载或直接预览(依赖你使用的观察者面板):

import folium

@ex.automain
def run():
    # 生成folium地图并保存为HTML
    m = folium.Map(location=[45.5236, -122.6750])
    m.save("interactive_map.html")
    
    # 将HTML添加为artifact
    ex.add_artifact("interactive_map.html", name="folium_interactive_map")

如果你用Omniboard(Sacred的可视化面板),它支持直接在浏览器中打开存储的HTML artifact,就能看到交互式地图了。

在ModelChimp中处理HTML地图

ModelChimp允许上传自定义artifacts,你可以通过它的API或界面上传folium导出的HTML文件。虽然ModelChimp的默认预览可能不支持直接渲染交互式HTML,但你可以下载文件后在本地浏览器打开,完全不影响使用。

3. 工具推荐

我日常最常用的是Sacred + MongoDB + Omniboard的组合:

  • Sacred的灵活性完全能满足自定义实验记录的需求,比如你需要的GridSearch细节追踪、自定义artifact存储(包括HTML);
  • MongoDB作为观察者,能高效存储大量实验数据和文件;
  • Omniboard提供了直观的Web界面,方便查看实验结果、对比参数,还能直接预览HTML等artifact。

如果需要更侧重协作和内置可视化的工具,Weights & Biases(W&B)也是不错的选择——它支持直接渲染folium的HTML地图,并且有更丰富的交互式对比功能,但如果你已经偏好Sacred,那搭配Omniboard完全能覆盖你的需求。

内容的提问来源于stack exchange,提问作者Angelo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:10:50