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

举报
tsinghuazhuoqing 发表于 2021/12/28 22:31:26 2021/12/28
【摘要】 简 介: 本文讨论了meshgrid产生的三种方法,特别从meshgrid 到点阵列表之间的转换关系。 关键词: meshgrid,mgrid ...

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

关键词 meshgridmgrid

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

 

§01 类界面


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

▲ 图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))

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
a: [0, 1, 2, 3, 4]
b: [0, 1, 2]

  
 
  • 1
  • 2
x,y = meshgrid(a,b)
print("x: {}".format(x), "y: {}".format(y))

  
 
  • 1
  • 2
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
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
x,y = meshgrid(range(5), range(3))
print("x: {}".format(x), "y: {}".format(y))

  
 
  • 1
  • 2
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
  • 2
  • 3
  • 4
  • 5
  • 6

1.1.2 mgrid

(1)基本用法

x,y = mgrid[0:5, 0:3]
print("x: {}".format(x), "y: {}".format(y))

  
 
  • 1
  • 2
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]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

  通过上面对比,可以看到: 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))

  
 
  • 1
  • 2
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.  ]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

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

1.1.3 双重[for]循环

xy = [(a,b) for b in range(3) for a in range(5)]
print("xy: {}".format(xy))

  
 
  • 1
  • 2
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)]

  
 
  • 1
x1 = [x[0] for x in xy]
x2 = [x[1] for x in xy]
print("x1: {}".format(x1),"x2: {}".format(x2))

  
 
  • 1
  • 2
  • 3
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]

  
 
  • 1
  • 2
print(list(zip(*([iter(x1)]*5))))
print(list(zip(*([iter(x2)]*5))))

  
 
  • 1
  • 2
[(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
  • 2

1.1.4 meshgrid与坐标对相互转换

(1)meshgrid转换成坐标对

x = mgrid[0:5,0:3]
print("x: {}".format(x),"x.T: {}".format(x.T))

  
 
  • 1
  • 2
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]
[3 1]
[4 1]]
[[0 2]
[1 2]
[2 2]
[3 2]
[4 2]]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
x = mgrid[0:5,0:3].T.reshape(-1,2)
print("x: {}".format(x))

  
 
  • 1
  • 2
x: [[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]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

(2)坐标对转换成meshgrid

x = x.reshape(3,5,-1).T
print("x: {}".format(x))

  
 
  • 1
  • 2
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]]]

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

 

§02   结


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


■ 相关文献链接:

● 相关图表链接:

文章来源: zhuoqing.blog.csdn.net,作者:卓晴,版权归原作者所有,如需转载,请联系作者。

原文链接:zhuoqing.blog.csdn.net/article/details/122142783

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。