绘制分类界面以及性能曲面中的meshgrid函数

Posted 卓晴

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了绘制分类界面以及性能曲面中的meshgrid函数相关的知识,希望对你有一定的参考价值。

简 介: 本文讨论了meshgrid产生的三种方法,特别从meshgrid 到点阵列表之间的转换关系。

关键词 meshgridmgrid

分类界面
文章目录
meshgrid与mgrid
meshgrid
mgrid
双重循环
meshgrid与坐标对相互转换
总 结

 

§01 类界面


  分类器机器学习数据挖掘 中最要的分析方法。在 sklearn中分类器的比较 对比了十种不同的分类器的分类洁面效果。这可帮助我们进一步了解各个分类器的特征。

▲ 图1.1 十种分类器的分类界面

  下面对于sklearn中分类器的比较中的分类器显示界面进行初步的测试。

1.1 meshgrid与mgrid

  在绘制分类界面以及其他性能曲面的时候,生成格点坐标用来计算曲面每个点的数值,然后才可以进行显示。 从 numpy meshgrid 和 mgrid 的两个简单实例和解析 介绍了生成格点的几种方法。

1.1.1 meshgrid

import sys,os,math,time
import matplotlib.pyplot as plt
from numpy import *

a = list(range(5))
b = list(range(3))

print("a: ".format(a),"b: ".format(b))
a: [0, 1, 2, 3, 4]
b: [0, 1, 2]
x,y = meshgrid(a,b)
print("x: ".format(x), "y: ".format(y))
x: [[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]

y: [[0 0 0 0 0]
[1 1 1 1 1]
[2 2 2 2 2]]
x,y = meshgrid(range(5), range(3))
print("x: ".format(x), "y: ".format(y))
x: [[0 1 2 3 4]
[0 1 2 3 4]
[0 1 2 3 4]]
y: [[0 0 0 0 0]
[1 1 1 1 1]
[2 2 2 2 2]]

1.1.2 mgrid

(1)基本用法

x,y = mgrid[0:5, 0:3]
print("x: ".format(x), "y: ".format(y))
x: [[0 0 0]
[1 1 1]
[2 2 2]
[3 3 3]
[4 4 4]]
y: [[0 1 2]
[0 1 2]
[0 1 2]
[0 1 2]
[0 1 2]]

  通过上面对比,可以看到: meshgrid(range(5), range(3)) 与 mgrid[0:5,0:3]所生成的格点矩阵是不同。

(2)声明格点数量

x,y = mgrid[0:5:10j, 0:3:5j]
print("x: ".format(x), "y: ".format(y))
x: [[0.         0.         0.         0.         0.        ]
[0.55555556 0.55555556 0.55555556 0.55555556 0.55555556]
[1.11111111 1.11111111 1.11111111 1.11111111 1.11111111]
[1.66666667 1.66666667 1.66666667 1.66666667 1.66666667]
[2.22222222 2.22222222 2.22222222 2.22222222 2.22222222]
[2.77777778 2.77777778 2.77777778 2.77777778 2.77777778]
[3.33333333 3.33333333 3.33333333 3.33333333 3.33333333]
[3.88888889 3.88888889 3.88888889 3.88888889 3.88888889]
[4.44444444 4.44444444 4.44444444 4.44444444 4.44444444]
[5.         5.         5.         5.         5.        ]]
y: [[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]
[0.   0.75 1.5  2.25 3.  ]]

  当mgrid切片的第三个参数为虚数的时候,它表示对间隔进行细分多少份。

1.1.3 双重[for]循环

xy = [(a,b) for b in range(3) for a in range(5)]
print("xy: ".format(xy))
xy: [(0, 0), (1, 0), (2, 0), (3, 0), (4, 0), (0, 1), (1, 1), (2, 1), (3, 1), (4, 1), (0, 2), (1, 2), (2, 2), (3, 2), (4, 2)]
x1 = [x[0] for x in xy]
x2 = [x[1] for x in xy]
print("x1: ".format(x1),"x2: ".format(x2))
x1: [0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4]
x2: [0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2]
print(list(zip(*([iter(x1)]*5))))
print(list(zip(*([iter(x2)]*5))))
[(0, 1, 2, 3, 4), (0, 1, 2, 3, 4), (0, 1, 2, 3, 4)]
[(0, 0, 0, 0, 0), (1, 1, 1, 1, 1), (2, 2, 2, 2, 2)]

1.1.4 meshgrid与坐标对相互转换

(1)meshgrid转换成坐标对

x = mgrid[0:5,0:3]
print("x: ".format(x),"x.T: ".format(x.T))
x: [[[0 0 0]
[1 1 1]
[2 2 2]
[3 3 3]
[4 4 4]]
[[0 1 2]
[0 1 2]
[0 1 2]
[0 1 2]
[0 1 2]]]
x.T: [[[0 0]
[1 0]
[2 0]
[3 0]
[4 0]]
[[0 1]
[1 1]
[2 1]
<

以上是关于绘制分类界面以及性能曲面中的meshgrid函数的主要内容,如果未能解决你的问题,请参考以下文章

MATLAB学习——三维曲面图像绘制

通过一个函数对比 mgrid以及meshgrid函数

meshgrid方法

利用Axes3D绘制三维性能曲面

[Matlab]三维曲面绘制实例

如何在三维曲面图中绘制三个不同的数组[重复]