热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:关于等高线绘制和全平面坐标节点生成

本文由编程笔记#小编为大家整理,主要介绍了关于等高线绘制和全平面坐标节点生成相关的知识,希望对你有一定的参考价值。要明白机器学习画图的一个思路,就是全局生成坐标节点,然后让
本文由编程笔记#小编为大家整理,主要介绍了关于等高线绘制和全平面坐标节点生成相关的知识,希望对你有一定的参考价值。


  要明白机器学习画图的一个思路,就是全局生成坐标节点,然后让模型进行学习,这样可以得到一个全局的效果图(比如等高线),然后再把指定的数据扔到模型中让其学习,获取分类,然后再把这些局部点绘制出来,和整体的效果图进行比较,将会发现非常吻合。

  


1 from matplotlib.colors import ListedColormap
2 from pprint import pprint
3 def plot_decision_boundary(clf, X, y, axes=[0, 7.5, 0, 3], iris=True,
4 legend=False, plot_training=True):
5 # python经典的生成全面点的实现
6 x1s = np.linspace(axes[0], axes[1], 100)
7 x2s = np.linspace(axes[2], axes[3], 100)
8 x1, x2 = np.meshgrid(x1s, x2s)
9 X_new = np.c_[x1.ravel(), x2.ravel()] # 所有的点生成,本身是一个二维数组
10 # 预测种类,clf.repdict(X_new)其实是一个行向量(X_new每个二元坐标组将会对应一个分类,所以X_new是二维,但是y_pred是一维),
11 # reshape就是要转换成和X1相对应的形式,x1是(100, 100)的二维数组;但是,问题是为什么要reshape一下?因为在下面的等高线绘制
12 # 的内部处理中,将会生成一个(100, 100)的点集,然后根据类型进行等高线着色,那么根据每个点集的索引(比如[0][1])找到对应的
13 # 分类进行,然后决定着色种类,所以y_pred需要进行reshape为二维数组。
14 y_pred = clf.predict(X_new).reshape(x1.shape)
15
16
17 print("len(x1):{},x1.size:{}".format(len(x1), x1.size))
18 pprint(x1)
19 print("len(x2):{},x2.size:{}".format(len(x2), x2.size))
20 pprint(x2)
21 print("len(X_new): {}; X_new.size: {}".format(len(X_new), X_new.size))
22 pprint(X_new)
23 tmp = clf.predict(X_new)
24 print("len(ctrl.predict(X_new)): {}; ctrl.predict(X_new).size: {}".format(len(tmp), tmp.size))
25 pprint(tmp)
26 pprint("x1.shape:")
27 pprint(x1.shape)
28 tmp2 = tmp.reshape(x1.shape)
29 print("len(ctrl.predict(tmp2.reshape)): {}; ctrl.predict(tmp2.reshape).size: {}".format(len(tmp2),
30 tmp2.size))
31 pprint(tmp2)
32
33
34
35
36
37 custom_cmap = ListedColormap([#fafab0,#9898ff,#a0faa0])
38 plt.contourf(x1, x2, y_pred, alpha=0.3, cmap=custom_cmap, lineyo", label="Iris-Setosa")
45 plt.plot(X[:, 0][y==1], X[:, 1][y==1], "bs", label="Iris-Versicolour")
46 plt.plot(X[:, 0][y==2], X[:, 1][y==2], "g^", label="Iris-Virginica")
47 plt.axis(axes)
48 if iris:
49 plt.xlabel("Petal length", fOntsize=14)
50 plt.ylabel("Petal width", fOntsize=14)
51 else:
52 plt.xlabel(r"$x_1$", fOntsize=18)
53 plt.ylabel(r"$x_2$", fOntsize=18, rotation=0)
54 if legend:
55 plt.legend(loc="lower right", fOntsize=14)
56
57 plt.figure(figsize=(11, 4))
58 plot_decision_boundary(tree_clf, X, y)
59 plt.plot([2.45, 2.45], [0, 3], "k-", linek--", linek:", linek:", lineDepth=0", fOntsize=15)
64 plt.text(3.2, 1.80, "Depth=1", fOntsize=13)
65 plt.text(4.05, 0.5, "(Depth=2)", fOntsize=11)
66
67 # save_fig("decision_tree_decision_boundaries_plot")
68 plt.show()

 

输出内容:

len(x1):100,x1.size:10000
array([[0. , 0.07575758, 0.15151515, ..., 7.34848485, 7.42424242,
7.5 ],
[0. , 0.07575758, 0.15151515, ..., 7.34848485, 7.42424242,
7.5 ],
[0. , 0.07575758, 0.15151515, ..., 7.34848485, 7.42424242,
7.5 ],
...,
[0. , 0.07575758, 0.15151515, ..., 7.34848485, 7.42424242,
7.5 ],
[0. , 0.07575758, 0.15151515, ..., 7.34848485, 7.42424242,
7.5 ],
[0. , 0.07575758, 0.15151515, ..., 7.34848485, 7.42424242,
7.5 ]])
len(x2):100,x2.size:10000
array([[0. , 0. , 0. , ..., 0. , 0. ,
0. ],
[0.03030303, 0.03030303, 0.03030303, ..., 0.03030303, 0.03030303,
0.03030303],
[0.06060606, 0.06060606, 0.06060606, ..., 0.06060606, 0.06060606,
0.06060606],
...,
[2.93939394, 2.93939394, 2.93939394, ..., 2.93939394, 2.93939394,
2.93939394],
[2.96969697, 2.96969697, 2.96969697, ..., 2.96969697, 2.96969697,
2.96969697],
[3. , 3. , 3. , ..., 3. , 3. ,
3. ]])
len(X_new): 10000; X_new.size: 20000
array([[0. , 0. ],
[0.07575758, 0. ],
[0.15151515, 0. ],
...,
[7.34848485, 3. ],
[7.42424242, 3. ],
[7.5 , 3. ]])
len(ctrl.predict(X_new)): 10000; ctrl.predict(X_new).size: 10000
array([0, 0, 0, ..., 2, 2, 2])
u‘x1.shape:‘
(100L, 100L)
len(ctrl.predict(tmp2.reshape)): 100; ctrl.predict(tmp2.reshape).size: 10000
array([[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
[0, 0, 0, ..., 1, 1, 1],
...,
[0, 0, 0, ..., 2, 2, 2],
[0, 0, 0, ..., 2, 2, 2],
[0, 0, 0, ..., 2, 2, 2]])

技术分享图片

 

  

 


推荐阅读
  • 我用Tkinter制作了一个图形用户界面,有两个主按钮:“开始”和“停止”。请您就如何使用“停止”按钮终止“开始”按钮为以下代码调用的已运行功能提供建议 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 推荐系统遇上深度学习(十七)详解推荐系统中的常用评测指标
    原创:石晓文小小挖掘机2018-06-18笔者是一个痴迷于挖掘数据中的价值的学习人,希望在平日的工作学习中,挖掘数据的价值, ... [详细]
  • ASP.NET2.0数据教程之十四:使用FormView的模板
    本文介绍了在ASP.NET 2.0中使用FormView控件来实现自定义的显示外观,与GridView和DetailsView不同,FormView使用模板来呈现,可以实现不规则的外观呈现。同时还介绍了TemplateField的用法和FormView与DetailsView的区别。 ... [详细]
  • 解决python matplotlib画水平直线的问题
    本文介绍了在使用python的matplotlib库画水平直线时可能遇到的问题,并提供了解决方法。通过导入numpy和matplotlib.pyplot模块,设置绘图对象的宽度和高度,以及使用plot函数绘制水平直线,可以解决该问题。 ... [详细]
  • 在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板
    本文介绍了在Xamarin XAML语言中如何在页面级别构建ControlTemplate控件模板的方法和步骤,包括将ResourceDictionary添加到页面中以及在ResourceDictionary中实现模板的构建。通过本文的阅读,读者可以了解到在Xamarin XAML语言中构建控件模板的具体操作步骤和语法形式。 ... [详细]
  • 网址:https:vue.docschina.orgv2guideforms.html表单input绑定基础用法可以通过使用v-model指令,在 ... [详细]
  • 本文介绍了使用哈夫曼树实现文件压缩和解压的方法。首先对数据结构课程设计中的代码进行了分析,包括使用时间调用、常量定义和统计文件中各个字符时相关的结构体。然后讨论了哈夫曼树的实现原理和算法。最后介绍了文件压缩和解压的具体步骤,包括字符统计、构建哈夫曼树、生成编码表、编码和解码过程。通过实例演示了文件压缩和解压的效果。本文的内容对于理解哈夫曼树的实现原理和应用具有一定的参考价值。 ... [详细]
  • EzPP 0.2发布,新增YAML布局渲染功能
    EzPP发布了0.2.1版本,新增了YAML布局渲染功能,可以将YAML文件渲染为图片,并且可以复用YAML作为模版,通过传递不同参数生成不同的图片。这个功能可以用于绘制Logo、封面或其他图片,让用户不需要安装或卸载Photoshop。文章还提供了一个入门例子,介绍了使用ezpp的基本渲染方法,以及如何使用canvas、text类元素、自定义字体等。 ... [详细]
  • 本文介绍了在Python张量流中使用make_merged_spec()方法合并设备规格对象的方法和语法,以及参数和返回值的说明,并提供了一个示例代码。 ... [详细]
  • OpenMap教程4 – 图层概述
    本文介绍了OpenMap教程4中关于地图图层的内容,包括将ShapeLayer添加到MapBean中的方法,OpenMap支持的图层类型以及使用BufferedLayer创建图像的MapBean。此外,还介绍了Layer背景标志的作用和OMGraphicHandlerLayer的基础层类。 ... [详细]
  • HashMap的扩容知识详解
    本文详细介绍了HashMap的扩容知识,包括扩容的概述、扩容条件以及1.7版本中的扩容方法。通过学习本文,读者可以全面了解HashMap的扩容机制,提升对HashMap的理解和应用能力。 ... [详细]
  • 引号快捷键_首选项和设置——自定义快捷键
    3.3自定义快捷键(CustomizingHotkeys)ChemDraw快捷键由一个XML文件定义,我们可以根据自己的需要, ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
author-avatar
农村小姑娘0
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有