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

Matplotlib散点图报错:ValueError: x and y must be the same size 求助

解决matplotlib散点图ValueError: x and y must be the same size问题

问题根源

你的X_test是**(6,8)的二维数组**(包含8个输入特征),而y_test是**(6,)的一维数组**。matplotlib的scatter函数会自动展平传入的x参数,导致x的元素总数变为48,和y的6个元素数量不匹配,触发x and y must be the same size错误。

另外代码存在笔误:Testing_Datatset拼写错误,后续调用的是Testing_Dataset,需要修正。

解决方案

由于你做的是多特征回归,无法在二维图中同时展示所有特征与目标值的关系,推荐两种可视化方案:

方案1:真实值vs预测值散点图(多特征回归常用)

通过对比模型预测值和真实值,直观展示拟合效果:

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# 修正拼写错误
Training_Dataset = pd.read_csv("https://raw.githubusercontent.com/kuroisep/Problem-1-Data-Analytic/main/A-train.csv?token=GHSAT0AAAAAABZ7O6G34ZTK4PMQGGZLRVS4Y2LAJSQ")
Training_Dataset = Training_Dataset.dropna()
X_train = np.array(Training_Dataset.iloc[:, :-1].values)
y_train = np.array(Training_Dataset.iloc[:, 1].values)

Testing_Dataset = pd.read_csv("https://raw.githubusercontent.com/kuroisep/Problem-1-Data-Analytic/main/A-test.csv?token=GHSAT0AAAAAABZ7O6G2PRKTCT6YBKLZZSRWY2LAK2Q")
Testing_Dataset = Testing_Dataset.dropna()
X_test = np.array(Testing_Dataset.iloc[:, :-1].values)
y_test = np.array(Testing_Dataset.iloc[:, 1].values)

from sklearn.linear_model import LinearRegression
regressor = LinearRegression()
regressor.fit(X_train, y_train)

accuracy = regressor.score(X_test, y_test)
print('Accuracy = '+ str(accuracy))

# 生成测试集预测值
y_pred = regressor.predict(X_test)

plt.style.use('seaborn')
# 绘制真实值与预测值的散点图
plt.scatter(y_test, y_pred, color = 'red', marker = 'o', s = 35, alpha = 0.5,
          label = 'Test data')
# 添加理想拟合线(y=x)
plt.plot([y_test.min(), y_test.max()], [y_test.min(), y_test.max()], color = 'blue', label='Perfect Fit')
plt.title('True Values vs Predicted Values')
plt.xlabel('True Values')
plt.ylabel('Predicted Values')
plt.legend(loc = 'upper left')
plt.show()

方案2:单个特征与目标值的关系图

如果需要查看某一个特征和目标值的关联,可以单独提取该特征绘图:

# 以第一个特征为例
plt.style.use('seaborn')
plt.scatter(X_test[:, 0], y_test, color='red', marker='o', s=35, alpha=0.5, label='True Values')
plt.scatter(X_test[:, 0], y_pred, color='blue', marker='x', s=35, alpha=0.5, label='Predicted Values')
plt.title('Feature 0 vs True/Predicted Values')
plt.xlabel('Feature 0')
plt.ylabel('Target Values')
plt.legend(loc='upper left')
plt.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 02:30:59