![](https://csdnimg.cn/release/download_crawler_static/87757270/bg5.jpg)
28 第2 章 创建分类器
(4) 画出数据点和边界:
plot_classifier(classifier, X, y)
需要定义如下画图函数:
def plot_classifier(classifier, X, y):
# 定义图形的取值范围
x_min, x_max = min(X[:, 0]) - 1.0, max(X[:, 0]) + 1.0
y_min, y_max = min(X[:, 1]) - 1.0, max(X[:, 1]) + 1.0
预测值表示我们在图形中想要使用的数值范围,通常是从最小值到最大值。我们增加了一些
余量(buffer),例如上面代码中的1.0。
(5) 为了画出边界,还需要利用一组网格(grid)数据求出方程的值,然后把边界画出来。下
面继续定义网格:
# 设置网格数据的步长
step_size = 0.01
# 定义网格
x_values, y_values = np.meshgrid(np.arange(x_min, x_max, step_size),
np.arange(y_min, y_max, step_size))
变量x_values和y_values包含求解方程数值的网格点。
(6) 计算出分类器对所有数据点的分类结果:
# 计算分类器输出结果
mesh_output = classifier.predict(np.c_[x_values.ravel(), y_values.ravel()])
# 数组维度变形
mesh_output = mesh_output.reshape(x_values.shape)
(7) 用彩色区域画出各个类型的边界:
# 用彩图画出分类结果
plt.figure()
# 选择配色方案
plt.pcolormesh(x_values, y_values, mesh_output, cmap=plt.cm.gray)
这基本算是一个三维画图器,既可以画二维数据点,又可以用色彩清单(color scheme)表
示不同区域的相关属性。你可以在http://matplotlib.org/examples/color/colormaps_reference.html 找
到所有的色彩清单。
(8) 接下来再把训练数据点画在图上:
plt.scatter(X[:, 0], X[:, 1], c=y, s=80, edgecolors='black', linewidth=1,
cmap=plt.cm.Paired)
# 设置图形的取值范围