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

使用MLP模拟10×10表格时出现KeyError:1错误,求解决方案

问题:MLP模拟10×10表格时触发KeyError:1错误

我正在练习用MLP(多层感知器)模拟10×10表格,开发完成后运行代码时出现KeyError:1错误,无法定位修改点。

错误相关信息

  • 错误触发在循环打印y_test与预测值的环节,当循环到i=1时抛出KeyError
  • 检查y_test和y_hat的数值后,发现y_test是带有非连续/非默认整数索引的pandas Series,而非普通数组或列表

出错代码段

y_pred = mlp.predict(X_test) 
for i in range(len(y_test)):
    print("y_test: {}    y_prediction: {}".format(y_test[i], y_pred[i]))
    
# 计算MSE
mse = mean_squared_error(y_test, y_pred)
print("MSE: {}".format(mse))

# 对预测值取两位小数得到y_hat,计算新MSE
print("\n\nAfter Rounding off...") 
y_hat = np.around(y_pred, decimals=2) 
for i in range(len(y_test)):
    print("y_test: {}    y_hat: {}".format(y_test[i], y_hat[i]))
    
# 新MSE
new_mse = mean_squared_error(y_test, y_hat)
print("New MSE: {}".format(new_mse))

解决方法

错误原因

y_test是pandas Series类型,其索引并非从0开始的连续整数。用range(len(y_test))生成的索引值i去访问y_test[i]时,该索引值不存在于Series的索引集合中,因此触发KeyError。

三种修改方案

  1. 转换为numpy数组
    将y_test转为数组后,可通过位置索引正常访问:

    # 提前转换
    y_test = y_test.values
    # 或在打印时直接调用values
    print("y_test: {}    y_prediction: {}".format(y_test.values[i], y_pred[i]))
    
  2. 迭代元素而非索引
    使用zip配对y_test和y_pred的元素,避免索引问题:

    for y_true, y_pred_val in zip(y_test, y_pred):
        print("y_test: {}    y_prediction: {}".format(y_true, y_pred_val))
    
  3. 重置Series索引
    将y_test的索引重置为从0开始的连续整数:

    y_test = y_test.reset_index(drop=True)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:02:27