首页 > 学院 > 开发设计 > 正文

Sklearn机器学习:如何绘制全局二维特征-单预测结果的背景图

2019-11-08 03:04:28
字体:
来源:转载
供稿:网友

如图所示为python使用sklearn对iris前两列数据进行svm分析后得到的分类结果, 图中不同颜色的点代表实际的分类结果,背景颜色代表构建的预测模型的分类结果 那么如何绘制预测模型的分类结果背景呢? 这里写图片描述

代码及图片示意结果如下:import numpy as npimport matplotlib.pyplot as pltn = 3xx, 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)有着相同的分布结果

这里写图片描述


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表