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

Python新手神经网络回归:预测与实际值索引不匹配问题求助

解决预测值与实际值索引不匹配问题及后续可视化/评估方案

首先,咱们先定位问题核心:你手动遍历匹配X_test和原始X的方式存在两个致命问题:

  1. 如果原始数据中有重复的特征行,同一个X_test的样本可能在原始X中找到多个匹配项,导致actual_values长度超过pred(就是你遇到的13 vs 12的情况);
  2. 完全没必要这么做!train_test_split函数已经帮你把对应X_test的实际值拆成y_test了,两者是天然一一对应的。

一步修正代码(直接用y_test作为实际值)

把你手动找索引的代码全部删掉,替换成下面的简化版本:

#import statements
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from sklearn.neural_network import MLPRegressor
from sklearn.model_selection import train_test_split
%matplotlib inline

#importing the dataset
data = pd.read_csv("PPV_dataset.csv")
X = data.drop(["PPV"], axis=1)  # 用axis=1替代旧写法,适配新版pandas
y = data["PPV"]

#model training & prediction
nn = MLPRegressor(hidden_layer_sizes=(100,), activation='logistic', solver='sgd')
# 拆分数据:X_train/X_test和y_train/y_test是严格对应的
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25)
nn.fit(X_train, y_train)
pred = nn.predict(X_test)

# 验证长度:现在两者肯定一致
print(f"实际值长度: {len(y_test)}, 预测值长度: {len(pred)}")

如果你需要获取测试样本的原始索引

如果后续需要用到这些测试样本在原始数据集里的位置,直接用X_test的索引即可(因为我们用DataFrame存储X,保留了原始索引):

# 获取测试样本的原始索引
test_original_indices = X_test.index
# 通过索引取实际值(和y_test完全等价)
actual_values = y.loc[test_original_indices]

绘制预测值vs实际值曲线

现在可以放心绘制对比图了,加上一条完美预测的参考线会更直观:

plt.figure(figsize=(10, 6))
# 散点图展示预测值与实际值的分布
plt.scatter(y_test, pred, alpha=0.6, label='预测值')
# 绘制y=x参考线(代表完美预测)
plt.plot([y.min(), y.max()], [y.min(), y.max()], 'r--', label='完美预测线')
plt.xlabel('实际值 (PPV)')
plt.ylabel('预测值 (PPV)')
plt.title('神经网络回归:预测值 vs 实际值')
plt.legend()
plt.show()

关于回归系数的说明

MLP是非线性神经网络模型,不像线性回归那样有明确的单一回归系数。如果要评估模型的回归性能,推荐用这些常用指标:

from sklearn.metrics import r2_score, mean_absolute_error, mean_squared_error

r2 = r2_score(y_test, pred)
mae = mean_absolute_error(y_test, pred)
mse = mean_squared_error(y_test, pred)

print(f"R²决定系数: {r2:.4f}")  # 越接近1越好
print(f"平均绝对误差(MAE): {mae:.4f}")
print(f"均方误差(MSE): {mse:.4f}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 14:42:51