[斯坦福大学2014机器学习教程笔记]第五章-数据绘制

    当开发学习算法时,往往几个简单的图,可以让你更好地理解算法的内容,并且可以完整地检查下算法是否正常运行,是否达到了算法的目的。例如在之前的课程中,学了如何绘制成本函数J(θ),可以帮助确认梯度下降算法是否收敛。通常情况下,绘制数据或学习算法所有输出,也会启发如何改进学习算法。幸运的是,Octave有非常简单的工具用来生成大量不同的图。当用学习算法时,会发现绘制数据、绘制学习算法等,往往是获得想法来改进算法的重要部分。在这节中,将学习一些Octave的工具来绘制和可视化数据。

    我们先来快速生成一些数据用来绘图。我们设 t = [ 0 : 0.01 : 0.98 ]; ,t是从0到0.98的数列。我们设 y1 = sin(2*pi*4*t); ,如果想绘制正弦函数,这很容易,我们只需要输入ploy(t,y1);并回车,就会出现这个图

    它的横轴是变量t,纵轴是变量y1(也就是我们刚刚计算的正弦函数)。

    让我们设 y2 = cos(2*pi*4*t) ,如果输入plot(t,y2),那么Ocatve会消除之前的正弦图并且用下面这个余弦图来代替它。

    纵轴cos(x)从1开始。

    如果我要同时表示正弦和余弦曲线。要做的就是,输入:plot(t, y1),得到正弦函数。我使用函数hold on,hold on函数的功能是将在旧的图像之上绘制新的图像。我现在绘制y2,输入:plot(t, y2)。我要以不同的颜色绘制余弦函数,所以我在这里输入'r'(带引号的r)绘制余弦函数,r表示所使用的颜色:plot(t,y2,'r')。

    再加上命令xlabel('time'),来加上X轴即横轴的标签time,输入ylabel('value'),来加上纵轴的标签value

    同时也可以来标记两条函数曲线,用这个命令 legend('sin','cos')就行。将这个图例放在右上方,表示这两条曲线表示的内容。最后输入title('myplot'),在图像的顶部显示这幅图的标题

    如果想保存这幅图像,输入print -dpng 'myplot.png'。png是一个图像文件格式,如果你这样做了,它可以让你保存为一个文件。我们还可以改路径,如cd 'C:\Users\ang\Desktop': print -dpng 'myplot.png'。Octave也可以保存为很多其他的格式,如果你想试试其他格式文件,你可以键入help plot。最后,如果你想关掉这个图像,用命令close会让这个图像关掉。

    Octave也可以为图像标号输入figure(1); plot(t, y1);将显示第一张图(即正弦函数图)。

    如果想绘制第二个图,可以指定一个不同的数字编号,输入figure(2); plot(t, y2);将显示第二张图(即余弦函数图)。此时我们其实有两个图,一个绘制了正弦函数图像,另一个绘制了余弦函数图像。

    接下来讲一下subplot命令,我们要使用subplot(1,2,1)它将图像分为一个1*2的格子,也就是前两个参数的意义,然后它使用第一个格子,也就是最后一个参数1的意思。那么这个图像就显示在左边。

    如果输入plot(t,y1),现在这个图显示在第一个格子。

    如果输入subplot(1,2,2),那么就要使用第二个格子。输入plot(t,y2);现在y2显示在右边,也就是第二个格子。

    最后,可以改变轴的刻度,比如改成[0.5 1 -1 1],输入命令:axis([0.5 1 -1 1])也就是设置了右边图中x轴和y轴的范围。具体来说就是将右图中x轴的范围调整到0.5至1y轴的范围调整到-1到1

    你不需要记住所有这些命令,如果你需要改变坐标轴,或者需要知道axis命令,你可以用Octave中用help命令了解细节。

    最后,还有几个命令。
    clf命令可以清除一幅图像。
    让我们设置A等于一个5×5的magic方阵:

    可以使用imagesc(A)命令来可视化矩阵,它将会绘制一个5*5的矩阵。它将矩阵绘制成一个5*5的彩色格图,不同的颜色对应A矩阵中的不同值。

   具体地说,我还可以使用函数colorbar,让我用一个更复杂的命令 imagesc(A),colorbar,colormap gray。这实际上是在同一时间运行三个命令:运行imagesc,然后运行,colorbar,然后运行colormap gray。它生成了一个颜色图像,一个灰度分布图,并在右边也加入一个颜色条。这个颜色条显示不同深浅的颜色所对应的值。具体来说,A矩阵左上角的元素是17,所以对应的是中等的灰度。它右边一个元素是24,对应的就是接近白色的灰度。

    我们还可以绘制一个更大的图像。输入imagesc(magic(15)),colorbar,colormap gray,我们得到一个15*15的幻方。这将会是一幅15*15的方阵数值的图。

    最后再说一个内容。你看到我所做的是使用逗号连接函数调用。如果我输入a=1,b=2,c=3然后回车,这其实是将三个命令同时执行,或者说是将三个命令一个接一个执行,它将输出所有这三个结果。其实这和a=1;b=2;c=3;很像。但是,如果我用分号,它不会输入任何东西。这里我们称之为逗号连接的命令或逗号连接的函数调用。用逗号连接是另一种Octave中更便捷的方式,将多条命令例如imagesc,colorbar,colormap,将这多条命令写在同一行中。

posted @ 2020-04-07 21:50  不爱学习的Shirley  阅读(245)  评论(0编辑  收藏  举报