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

如何在Databricks中使用独立数据集验证AutoML模型结果

解决Databricks AutoML独立测试集验证的问题

核心错误原因

AttributeError: 'DataFrame' object has no attribute 'loc'是因为df是Spark DataFrame,而loc是Pandas DataFrame特有的索引方法,两者无法混用。

修正测试集加载代码

提供两种可行的修正方案:

方案1:Spark转Pandas DataFrame(适合小数据集)

将读取后的Spark表转为Pandas格式,即可正常使用loc操作:

# 读取Delta表并转为Pandas DataFrame
df = spark.read.format('delta').load(
  'dbfs:/user/hive/warehouse/test_df/',
  header=True,
  inferSchema=True
).toPandas()  # 关键:添加toPandas()完成格式转换

# 过滤测试集
split_test_df = df.loc[df._automl_split_col_3da1 == 'test']

方案2:Spark先过滤再转Pandas(适合大数据集)

先用Spark语法过滤出测试集,再转为Pandas,减少内存占用:

# 读取Delta表
df_spark = spark.read.format('delta').load(
  'dbfs:/user/hive/warehouse/test_df/',
  header=True,
  inferSchema=True
)
# 使用Spark filter方法替代loc
split_test_df = df_spark.filter(df_spark._automl_split_col_3da1 == 'test').toPandas()

完整验证模型流程(确保结果基于独立测试集)

修正测试集后,需加载AutoML模型并完成评估:

  1. 加载AutoML训练的模型
# 替换为你的AutoML运行ID
run_id = "your_automl_run_id"
model = mlflow.sklearn.load_model(f"runs:/{run_id}/model")
  1. 预处理测试数据
    确保测试数据和训练数据用相同的预处理流程:
# 分离特征与目标列
X_test = split_test_df.drop([target_col, "_automl_split_col_3da1"], axis=1)
y_test = split_test_df[target_col]

# 用AutoML生成的preprocessor处理特征
X_test_processed = preprocessor.transform(X_test)
  1. 生成预测并评估指标
from sklearn.metrics import confusion_matrix, accuracy_score, classification_report

# 生成预测结果
y_pred = model.predict(X_test_processed)

# 计算并打印评估指标
print(f"测试集准确率: {accuracy_score(y_test, y_pred):.4f}")
print("\n混淆矩阵:")
print(confusion_matrix(y_test, y_pred))
print("\n分类报告:")
print(classification_report(y_test, y_pred))

关于混淆矩阵与准确性的确认

  • 只要split_test_df来自你指定的独立test_df数据集,而非AutoML内部拆分的测试集,那么生成的混淆矩阵和准确率就是基于你的独立验证数据。
  • 可通过打印split_test_df.shape或样本信息,确认数据是预期的独立测试集。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 00:10:31