[9/7](2)Matplotlibベース


リファレンス

  • プログラム設計課程の内容を整理復習し、基礎的な深い学習情報を格納するために
  • を作成する.
  • 高校の数学程度の学生が主な対象である.
  • Pythonの基本コンテンツ(データ型、制御文、関数、クラス)の学習が完了しました.

    クラス環境

  • MacOS(学生)/Ubuntu 20.04(先生)
  • python 3.8
  • anaconda 4.10.3
  • Matplitlitlibのインストール


    matplotlibはグラフィックなどを描くときによく使われるライブラリです.複数の図形描画機能をサポートします.
    terminalを開き、次のコマンドを実行します.
    pip install matplotlib
    インストールが完了したら、pythonファイルで次の操作を実行してもエラーが発生しなければ成功します.
    from matplotlib import pyplot as plt
    これは、pltの別名でモジュール、特にpyplotというモジュールをインポートすることを意味します.次のようになります.
    import matplotlib.pyplot as plt

    描画


    の基礎を置く


    コードを直接見てみましょう.難しくないです.
    from matplotlib import pyplot as plt
    
    plt.plot([1, 2, 3], [4, 7, 6])
    plt.show()
    実行するとウィンドウがポップアップしますか?グラフを見ると正常です.1番目のリストはx軸の座標、2番目のリストはy軸の座標、pltです.plot()関数は、与えられた点を直線に接続します.

    numpyペイント関数を使用しない


    直線ができたばかりです.曲線関数はどうやって描きますか?xの間隔を細かく割って、各部分を直線につなぎます.
    次の例では、二次関数y = x(x - 1)が描かれている.
    def f(x):
    	return x * (x - 1)
    
    x_range = [i / 20 for i in range(-100, 100)]
    y_range = [f(x) for x in x_range]
    plt.plot(x_range, y_range)
    plt.show()
    x,y rangeをするとき、listにfor文が入っていますよね?この文法をlist理解と呼ぶ.直観的に理解するのは難しくありません.
    変数irange(-100, 100)に回転すると、i / 20をリストとして取ります!次のコードと同じです.
    def get_range():
    	tmp = list()
        for i in range(-100, 100):
        	tmp.append(i / 20)
        return tmp
    x_range = get_range()
    利用して理解するともっときれいになるでしょう?よく使います.

    numpyを使用して関数を描画するには


    numpyのワイド鋳型を使用すると、listを使用して理解することなく、関数の描画を簡略化できます.xセグメントを小さく切る原理は同じです.
    from matplotlib import pyplot as plt
    import numpy as np
    
    def f(x_arr):
    	y_arr = x_arr * (x_arr - 1)  # broad cast. 스칼라와의 연산을 shape에 자동으로 맞춰서!
        return y_arr
        
    xrange = np.arange(-5, 5, 0.05)
    yrange = f(xrange)
    plt.plot(xrange, yrange)
    plt.show()
    Python自体のnp.arangeとは異なり、range関数はstepに実数を加えて、よりコンパクトなrangeを作成することもできます.

    かんすうていり


    今まで学んだことを応用して、いろいろな関数を描くことができます!
    from matplotlib import pyplot as plt
    import numpy as np
    
    xrange = np.arange(-5, 5, 0.05)
    yrange1 = xrange * (xrange - 1)  # 이렇게 줄여도 무방
    yrange2 = np.abs(xrange)  # 절댓값 함수
    yrange3 = np.sin(xrange)  # sin 함수
    
    plt.plot(xrange, yrange1)
    plt.plot(xrange, yrange2)
    plt.plot(xrange, yrange3)
    plt.show()

    Reference

  • https://github.com/WegraLee/deep-learning-from-scratch/