如图所示为python使用sklearn对iris前两列数据进行svm分析后得到的分类结果,
图中不同颜色的点代表实际的分类结果,背景颜色代表构建的预测模型的分类结果
那么如何绘制预测模型的分类结果背景呢?
- 代码及图片示意结果如下:
import numpy as np
import matplotlib.pyplot as plt
n = 3
xx, yy = np.meshgrid(np.arange(-12, 12, n),np.arange(-6, 6, n))#此处也可用linspace等
print(xx)
plt.matshow(xx,extent=(xx.min(), xx.max(), yy.min(), yy.max()),aspect='auto')
plt.show()
- 理解meshgrid的xx数据分布:
[[-12 -9 -6 -3 0 3 6 9]
[-12 -9 -6 -3 0 3 6 9]
[-12 -9 -6 -3 0 3 6 9]
[-12 -9 -6 -3 0 3 6 9]]
print(yy)
plt.matshow(yy, extent=(xx.min(), xx.max(), yy.min(), yy.max()),aspect='auto')
plt.show()
- 理解meshgrid的yy数据分布:
[[-6 -6 -6 -6 -6 -6 -6 -6]
[-3 -3 -3 -3 -3 -3 -3 -3]
[ 0 0 0 0 0 0 0 0]
[ 3 3 3 3 3 3 3 3]]
def predict(X_F1,X_F2): # 人为构建一个预测模型,X_Fi为输入样本的特征
"""
just like a prediction method in sklearn,
which returns a value
as the classification or regression result
"""
return X+Y # 输出模型的预测分类结果
mm = predict(xx,yy) #这里mm就是模仿sklearn中调用模型的预测分类结果
print(mm)
plt.matshow(mm, extent=(xx.min(), xx.max(), yy.min(), yy.max()),aspect='auto')
plt.show()
- 理解meshgrid的xx与yy联立的数据分布:
[[-18 -15 -12 -9 -6 -3 0 3]
[-15 -12 -9 -6 -3 0 3 6]
[-12 -9 -6 -3 0 3 6 9]
[ -9 -6 -3 0 3 6 9 12]]
#利用extent遍历绘图区域中的有限点,
#以这些点为中心,以mm绘制预测分类结果
#绘制矩阵图形,当n越大时,全局背景分类结果越精细
plt.imshow(mm, interpolation='nearest',
extent=(xx.min(), xx.max(), yy.min(), yy.max()), aspect='auto')
plt.show()
理解meshgrid的预测结果数据分布的绘制:
此处的重点是预测结果与坐标点(xx,yy)有着相同的分布结果