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

如何将Keras-Tuner的调参结果保存为Pandas DataFrame?

将Keras-Tuner调参结果转为Pandas DataFrame的方法

当然可以直接获取调参结果并转为DataFrame,不用依赖results_summary()的打印内容,也不用遍历保存文件。以下是具体实现:

核心思路

Keras-Tuner的优化器对象(比如你用的BayesianOptimization)内置了可直接调用的属性和方法,optimizer.trials能获取所有试验的完整数据,我们可以从中提取超参数、指标分数等信息,直接构造DataFrame。

完整实现代码

import pandas as pd

# 完成搜索后,遍历所有试验提取数据
trials_data = []
for trial in optimizer.trials:
    # 提取超参键值对
    hyperparams = trial.hyperparameters.values
    # 提取试验的目标指标值(比如你设置的val_loss)
    score = trial.score
    # 提取试验状态(是否成功完成)
    status = trial.status
    
    # 组合成字典
    trial_dict = {"score": score, "status": status}
    trial_dict.update(hyperparams)
    trials_data.append(trial_dict)

# 转为Pandas DataFrame
results_df = pd.DataFrame(trials_data)

# 按目标指标排序(如果是val_loss则升序,val_accuracy则改为ascending=False)
results_df = results_df.sort_values(by="score", ascending=True)

# 查看结果
print(results_df)

仅提取最优N个试验的方法

如果只需要像results_summary()那样展示最优的几个结果,可以用get_best_hyperparameters()筛选后再构造DataFrame:

best_hps = optimizer.get_best_hyperparameters(num_trials=5)
best_data = []
for hp in best_hps:
    # 通过trial_id匹配对应试验的分数
    trial = optimizer.trials[hp.trial_id]
    best_data.append({**hp.values, "score": trial.score})

best_df = pd.DataFrame(best_data)

补充说明

你之前遇到的results_summary()返回None是因为这个方法仅负责打印内容,不返回数据;optimizer.search()也不会返回结果,所有调参数据都存在优化器实例本身中,直接从实例提取即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 20:05:15