首页 > 解决方案 > 仅具有一维的多维“X”和“y”的绘图误差

问题描述

我想建立一个模型来预测将租用多少辆自行车。因此我正在使用 DecisionTreeRegressor 但我遇到了问题。我无法绘制这个,因为“ValueError:x 和 y 必须是相同的大小”。如果我将 X 和 y 与 len() 进行比较,我得到相同的长度。问题是我的 X 有 10 列而 y 只有 1 列。这就是我收到此错误的原因。我想用我的情节得到以下图片:

我想用下面的代码得到的图片

有什么想法我可以纠正这个吗?

X = df_day.drop(["date", "total_rides"], axis = 1)
y = df_day["total_rides"]
#X has something like 10 columns and y has only 1 column

X_train, X_test, y_train, y_test = train_test_split(X, y, random_state = 43, test_size = 0.25)

dtc = DecisionTreeRegressor(max_depth = None)
dtc.fit(X_train, y_train)
#dtc.score(X_test, y_test)

#Prediction
y_pred2 = dtc.predict(X_test)
plt.scatter(X, y)
plt.plot(X_test, y_pred2)
plt.show()

标签: pythonmatplotlibdata-science

解决方案


就像您的错误所说,您只能绘制具有相同大小的数组(即一个 x 列和一个 y 列或十个 x 列和十个 y 列,都具有相同的行数)。要将它们全部绘制在一起,您应该重复每列的 y 值。天真地:

for i in range(X.shape[0]):
    plt.scatter(X[:,i], y)
    plt.plot(X_test[:,i], y_pred2)

plt.show()

请注意,这些列可能都在不同的尺度上,这个图可能毫无意义。但是代码应该显示您希望看到的内容。


推荐阅读