关于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

