【发布时间】:2021-10-18 15:16:33
【问题描述】:
我想绘制每个点之间的差异。
我有一个系列y_test,它是一维的,包含连续值。索引有点古怪 (7618, 276, 7045, 6095, 2296, 7191, 1213, 2408...)。
我还有另一个 numpy 数组 ypred,它是一维的,包含 y_test 的预测。我想看看使用图表预测的每个值的差异。
我试过了:
fig, ax1 = plt.subplots(figsize = (20,5))
ax1.bar(y_test, y_test.index color = 'tab:orange')
ax1.set_ylabel('Actual',color = 'tab:orange')
ax2 = ax1.twinx()
ax2.bar(y_pred, y_test.index, color = 'tab:blue')
ax2.set_ylabel('Predicted',color = 'tab:blue')
plt.title('XGBoost Regression Performance')
fig.tight_layout()
plt.show()
但它返回错误:
ValueError: shape mismatch: objects cannot be broadcast to a single shape
bar/scatter/anything 都很好,我只是想一起看看所有的值。
这样我可以对最佳预测值进行分组,以了解我的原始数据中的哪些特征值最容易预测。
顺便说一句,如果有人可以推荐获取该信息的最佳 XGBoost 方式,请也告诉我。
这是一些数据:
ypred:
[10.410029 , 4.4897604, 29.77089 , 23.548471 , 27.415161 ,
56.28772 , 13.083108 , 38.086662 , 19.128792 , 42.49037 ,
65.15919 , 47.172436 , 39.517883 , 13.782948 , 121.52351 ,
8.388838 , 49.625607 , 24.28464 , 49.55232 , 34.797436]
y_test:
7618 9.88
276 2.69
7045 26.93
6095 23.49
2296 24.79
7191 57.09
1213 15.90
2408 46.26
5961 18.60
275 41.03
1707 66.25
2333 53.50
5717 40.60
1497 12.34
4937 121.93
2654 7.97
7442 53.65
7157 25.93
2141 54.28
4339 36.93
谢谢
【问题讨论】:
-
尝试使用提供的数据运行您的代码,修复明显的语法错误后,给我
TypeError: only size-1 arrays can be converted to Python scalars -
请发布正确的minimal reproducible example 并提供完整的错误回溯
-
@MadPhysicist 关于语法错误,您是对的!我已经批准了一个答案,但谢谢。我不确定您为什么会收到该类型错误。
标签: python numpy matplotlib plot data-visualization