Python 机器学习 - 散点图
散点图(Scatter Plot)
散点图是数据集中的每个值都由点表示的图。
Matplotlib 模块有一种绘制散点图的方法,它需要两个长度相同的数组,一个数组用于 x 轴的值,另一个数组用于 y 轴的值:
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
x 数组代表每辆汽车的年龄。
y 数组表示每个汽车的速度。
请使用 scatter()
方法绘制散点图:
import sys
import matplotlib
matplotlib.use('Agg')
import matplotlib.pyplot as plt
x = [5,7,8,7,2,17,2,9,4,11,12,9,6]
y = [99,86,87,88,111,86,103,87,94,78,77,85,86]
plt.scatter(x, y)
plt.show()
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
结果:
散点图解释
x 轴表示车龄,y 轴表示速度。
从图中可以看到,两辆最快的汽车都使用了 2 年,最慢的汽车使用了 12 年。
注释:汽车似乎越新,驾驶速度就越快,但这可能是一个巧合,毕竟我们只注册了 13 辆汽车。
随机数据分布
在机器学习中,数据集可以包含成千上万甚至数百万个值。
测试算法时,您可能没有真实的数据,您可能必须使用随机生成的值。
正如我们在上一章中学到的那样,NumPy 模块可以帮助我们!
让我们创建两个数组,它们都填充有来自正态数据分布的 1000 个随机数。
第一个数组的平均值设置为 5.0,标准差为 1.0。
第二个数组的平均值设置为 10.0,标准差为 2.0:
有 1000 个点的散点图:
import sys
import matplotlib
matplotlib.use('Agg')
import numpy
import matplotlib.pyplot as plt
x = numpy.random.normal(5.0, 1.0, 1000)
y = numpy.random.normal(10.0, 2.0, 1000)
plt.scatter(x, y)
plt.show()
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
结果:
散点图解释
我们可以看到,点集中在 x 轴上的值 5 和 y 轴上的 10 周围。
我们还可以看到,在 y 轴上扩散得比在 x 轴上更大。