MLPRegressor报错‘y_true与y_pred输出数量不一致’的解决求助
问题修复方案
核心错误原因
你在计算回归评估指标时,错误地将测试集的输入特征X_test作为真实标签(y_true)传入r2_score和mean_squared_error函数,正确的真实标签应该是y_test。这就导致y_true是9列(你的输入特征数),而模型预测的pred_nnr是1列(回归任务的输出),两者维度不匹配,触发了ValueError。
修复后的代码
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=42) model_nnr = MLPRegressor( hidden_layer_sizes = (30,30,30,30,30), activation = 'logistic', random_state = 0 ).fit(X_train, y_train) pred_nnr = model_nnr.predict(X_test) # 修正:将X_test替换为y_test print('r2_score:', r2_score(y_test, pred_nnr)) print('Mean Squared Error:', mean_squared_error(y_test, pred_nnr))
额外检查建议
- 确认
y的形状:确保你的输出标签y是一维数组(如(n_samples,))或二维单列数组(如(n_samples,1)),避免因y的维度异常导致模型输出不符合预期。 - 验证拆分结果:可以打印
y_test.shape和pred_nnr.shape,确认两者维度一致后再计算评估指标。
内容的提问来源于stack exchange,提问作者User
相关产品推荐
相关产品推荐

