Python Matplotlib 解决 X, Y 尺寸不一致的绘图问题
Python Matplotlib 解决 X, Y 尺寸不一致的绘图问题
在使用 Python 的 Matplotlib 库进行数据可视化时,有时会遇到 X 和 Y 数据尺寸不一致的问题,导致绘图出现错误。本文将针对随机森林回归中常见的尺寸不一致问题,提供两种解决方法。
问题描述:
在随机森林回归中,预测结果 yy 通常是一个一维数组,而原始数据 X 和 y 可能为二维数组。当使用 plt.scatter() 绘图时,由于 X 和 y 的尺寸不一致,会导致绘图失败。
解决方法:
方法一:使用 reshape() 函数调整数组尺寸
将 y 数组使用 reshape() 函数调整为与 X 相同的尺寸:
# 调整y数组的尺寸
y = y.reshape((len(y), 1))
# 绘图代码
plt.scatter(X, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)
方法二:使用 zip() 函数打包两个数组
将 X 和 y 数组使用 zip() 函数打包成元组,再进行绘图:
# 打包两个数组成元组
data = zip(X, y)
# 绘图代码
for x, y in data:
plt.scatter(x, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)
通过以上两种方法,可以有效解决 X 和 y 尺寸不一致的问题,并成功绘制出随机森林回归的图形。
代码示例:
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.colors import LinearSegmentedColormap
%matplotlib notebook
plt.rcParams['font.sans-serif'] = ['PingFang HK'] # 选择一个本地的支持中文的字体
fig, ax = plt.subplots()
ax.set_facecolor('#f8f9fa')
x_min, x_max = X[:, 0].min() - .5, X[:, 0].max() + .5
xx = np.arange(x_min, x_max, .05)
yy = rf.predict(np.c_[xx.ravel(), np.zeros(len(xx))])
# 方法一:使用 reshape() 函数
y = y.reshape((len(y), 1))
plt.scatter(X, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)
# 方法二:使用 zip() 函数
data = zip(X, y)
for x, y in data:
plt.scatter(x, y, c='#e63946', marker='o', s=20)
plt.plot(xx, yy)
ax.set_title('随机森林回归', color='#264653')
ax.set_xlabel('X', color='#264653')
ax.set_ylabel('Y', color='#264653')
ax.tick_params(labelcolor='#264653')
plt.show()
注意:
- 实际代码中,需要根据具体情况选择合适的解决方法。
- 在使用
reshape()函数时,需要确保y数组的元素数量与X数组的列数一致。 - 使用
zip()函数打包的元组中,每个元组包含一个X的元素和一个y的元素。
希望本文能够帮助您解决 Python Matplotlib 中的尺寸不一致问题。
原文地址: https://www.cveoy.top/t/topic/oQdq 著作权归作者所有。请勿转载和采集!