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

使用scikit-learn计算MAE时遇到代码问题,请求技术支援

问题排查与修正

你的代码里存在三个关键错误,导致无法正确计算MAE:

  • 未定义参数k:创建KNeighborsRegressor时使用的n_neighbors=k,但k变量没有被赋值,运行时会抛出NameError。
  • 混淆fit与predict方法:knn_model.fit(X_train,y_train)返回的是训练后的模型对象,不是预测结果。需要调用predict(X_val)来生成验证集的预测值。
  • 自定义MAE函数错误:当前函数返回的是绝对误差总和,而非平均绝对误差,缺少除以样本数量的步骤。

修正后的代码如下:

import numpy as np
from sklearn.neighbors import KNeighborsRegressor

def mae(prediction, target):
    # 除以样本数量得到平均绝对误差
    return np.sum(np.abs(prediction - target)) / len(target) 

# 先定义k的取值,比如取5
k = 5
knn_model = KNeighborsRegressor(n_neighbors=k)
# 先训练模型
knn_model.fit(X_train, y_train)
# 生成验证集的预测结果
prediction = knn_model.predict(X_val)
# 计算MAE
val_mae = mae(prediction, y_val)

另外,也可以直接使用scikit-learn内置的mean_absolute_error函数,避免手动实现出错:

from sklearn.metrics import mean_absolute_error

# 省略模型训练步骤...
prediction = knn_model.predict(X_val)
val_mae = mean_absolute_error(y_val, prediction)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 10:24:51