python机器学习之3D Matplotlib绘图

参考文献:
  1. python 3D绘图: https://morvanzhou.github.io/tutorials/data-manipulation/plt/3-5-3d/
  2. 一步看效果:https://blog.csdn.net/baoyan2015/article/details/52805349
  3. 进阶:https://blog.csdn.net/Eddy_zheng/article/details/48713449
  4. 效果:
    屏幕快照 2018-05-05 下午3.02.10.png
初衷

最近在读《白话深度学习与TensorFlow》,决定撸一把 “神经网络深度学习” 知识。全栈之路上,必须占领人工智能这个技术高地。

读完前三章,至少掌握了基本的概念:如机器学习、深度学习、神经网络深度学习、梯度下降法、反向传播等基础概念,原理方面也非常通俗易懂。利用有限的学习时间,占领深度学习这个技术高地。

看到梯度下降法时,有一个Loss损失函数 :

屏幕快照 2018-05-05 下午3.24.57.png

然后函数是显示在一个三维空间上的,特别想把这个函数的三维图片展示出来,于是有了写这篇小文章的初衷。

学习matplotlib
  1. 绘制三维散点图和简单四面体

    
    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    
    # 简单Demo
    fig = plt.figure()
    ax = fig.add_subplot(111, projection='3d')
    (这种方法是通过X,Y和Z构建一个矩阵,XYZ各取一个点,这里有四个点)
    X = [1, 1, 2, 2]
    Y = [3, 4, 4, 3]
    Z = [1, 2, 1, 1]
    
    # 绘制曲面 (四个点可以确定一个四面体)
    ax.plot_trisurf(X, Y, Z) 
    # 绘制散点图
    ax.scatter(X, Y, Z)
    plt.show()
    

    效果如下:


    屏幕快照 2018-05-05 下午3.05.53.png
屏幕快照 2018-05-05 下午3.06.57.png
  1. 绘制三维曲面和三维散点图

    import matplotlib.pyplot as plt
    from mpl_toolkits.mplot3d import Axes3D
    import numpy as np
    
    fig = plt.figure()
    ax = Axes3D(fig)
    X = np.arange(-4, 4, 0.25) 
    
    #此处生成一维数组,也可以叫numpy向量,具体格式为 [[-4.   -3.75 -3.5  ...  3.25  3.5   3.75]
     [-4.   -3.75 -3.5  ...  3.25  3.5   3.75]
     [-4.   -3.75 -3.5  ...  3.25  3.5   3.75]
     ...
     [-4.   -3.75 -3.5  ...  3.25  3.5   3.75]
     [-4.   -3.75 -3.5  ...  3.25  3.5   3.75]
     [-4.   -3.75 -3.5  ...  3.25  3.5   3.75]] 这是由X生成的一维数组,同理Y也生成了这样的数组
    
    Y = np.arange(-4, 4, 0.25)
    
    #X ,Y合并生成numpy对象,此处相当于合并生成(X,Y) 数组,用于Z (这里是我猜测的)
    X, Y = np.meshgrid(X, Y)
    
    R = np.sqrt(X**2 + Y**2)
    
    #生成Z对象,调用numpy的sin函数
    
    Z = np.sin(R) 
    # 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
    ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')
    plt.show()
    
    #Demo 2 绘制三维三点图
    # 绘制三维三点图
    data = np.random.randint(0, 255, size=[40, 40, 40])
    
    x, y, z = data[0], data[1], data[2]
    ax = plt.subplot(111, projection='3d')  # 创建一个三维的绘图工程
    #  将数据点分成三部分画,在颜色上有区分度
    ax.scatter(x[:10], y[:10], z[:10], c='y')  # 绘制数据点
    ax.scatter(x[10:20], y[10:20], z[10:20], c='r')
    ax.scatter(x[30:40], y[30:40], z[30:40], c='g')
    
    ax.set_zlabel('Z')  # 坐标轴
    ax.set_ylabel('Y')
    ax.set_xlabel('X')
    plt.show()
    

    最终效果如下:


    屏幕快照 2018-05-05 下午3.08.48.png
屏幕快照 2018-05-05 下午3.13.48.png
  1. 绘制二维函数

    参考文献:http://www.cnblogs.com/sheeva/p/5780784.html

    此处绘制的二维函数是

    image
    import numpy as np
    
    import matplotlib.pyplot as plt
    
    x=np.linspace(-5,5,1000)  #这个表示在-5到5之间生成1000个x值
    
    y=[1/(1+np.exp(-i)) for i in x]  #对上述生成的1000个数循环用sigmoid公式求对应的y
    
    plt.plot(x,y)  #用上述生成的1000个xy值对生成1000个点
    
    plt.show()  #绘制图像
    
  2. over

实践与实现

我们的目的是绘制函数:梯度下降法,Loss损失函数 :

fig = plt.figure()
ax = Axes3D(fig)
X = np.arange(-10, 10, 0.04)
Y = np.arange(-10, 10, 0.04)
X, Y = np.meshgrid(X, Y) #必须加上这段代码
Z = (X**2 + Y**2 + X*Y + X + Y + 1)
# 具体函数方法可用 help(function) 查看,如:help(ax.plot_surface)
ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap='rainbow')

plt.show()

效果如下:


小结
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343