绘制分类界面以及性能曲面中的meshgrid函数
Posted 卓晴
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了绘制分类界面以及性能曲面中的meshgrid函数相关的知识,希望对你有一定的参考价值。
简 介: 本文讨论了meshgrid产生的三种方法,特别从meshgrid 到点阵列表之间的转换关系。
关键词
: meshgrid,mgrid
§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函数的主要内容,如果未能解决你的问题,请参考以下文章